Nightmare JSをAWS Lambdaで実行しようとしていますが、関数が常にnullを返し、非同期コードを実行していないようです。AWS Lambda関数の約束が解決されない - 戻り値 - ナイトメアJS
exports.handler = (event, context, callback) => {
console.log('starting....')
const Nightmare = require('nightmare')
const nightmare = Nightmare()
console.log('created Nightmare: ', nightmare)
return nightmare
.goto('https://www.myurl.com')
.exists('[data-selector-element]')
.then((exists) => {
console.log('element exists: ', exists)
if (exists) {
return nightmare.click('[data-selector-element]')
.wait(200)
.evaluate(() => {
const title = document.querySelector('h1.header')
return { title }
})
.then((res) => {
context.success(res)
console.log('success:', res)
callback('success: ')
return res
})
} else {
return 'not present'
}
})
}
この関数は常にnullを返しますが、このプロセスは少なくとも2秒かかるはずですが、関数は通常約100msで終了します。最初の2つのコンソールログ(上記のreturn nightmare.goto...
)はLambdaによって登録されますが、後のログは登録されません。
私が間違っていることはありますか?
context.successはnodejs関数ではありません。context.succeedを意味しましたか? –
も言及価値があります。 context.succeedを呼び出すと、メソッドは戻り、後続の行は実行されません。 –
OKありがとうございます。はい、私は文脈の成功を意味しました。しかし、lambdaが過去の 'return nightmare.goto(...)'を過ぎていないように見えるので、これが問題を引き起こしているかどうかはわかりません。 – otajor