我想在AWS Lambda上運行Nightmare JS,但是我的函數總是返回null,並且似乎沒有運行任何異步代碼。這裏是我的代碼:AWS上的承諾Lambda函數不解決/返回 - Nightmare 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,雖然這個過程應該至少需要幾秒鐘,該功能一般在100毫秒左右結束。前兩個控制檯日誌(大於return nightmare.goto...
)由Lambda註冊,但後來的日誌不是。
有什麼我做錯了嗎?
context.success不是一個nodejs函數,你的意思是context.succeed? –
也值得一提;一旦你調用context.succeed,該方法將返回並且後續行將不會被執行。 –
好的,謝謝你。是的,我的意思是背景成功。但是,似乎lambda甚至沒有越過'return nightmare.goto(...)',所以我不確定這是導致問題的原因。 – otajor