这种问题通常是因为AWS Lambda在本地测试和部署时使用的Node.js版本不同所导致的。在本地测试时,您可能使用了较新版本的Node.js,而在部署时AWS Lambda可能使用的是较旧版本的Node.js。 在这种情况下,您需要使用ES6 Promise语法来编写代码。以下是一个使用ES6 Promise语法的示例:
exports.handler = async (event) => {
return await Promise.all([
somePromiseFunction(),
otherPromiseFunction(),
])
.then(results => {
console.log('promise results: ', results)
return { statusCode: 200, body: JSON.stringify(results) }
})
.catch(err => {
console.log('promise error: ', err)
return { statusCode: 500, body: JSON.stringify({ message: 'Internal Server Error' }) }
})
}
async function somePromiseFunction() {
return new Promise(resolve => {
setTimeout(() => {
resolve('somePromiseFunction result')
}, 1000)
})
}
async function otherPromiseFunction() {
return new Promise(resolve => {
setTimeout(() => {
resolve('otherPromiseFunction result')
}, 2000)
})
}
这个代码片段使用async / await和ES6 Promise来处理多个异步函数的结果。如果有任何一个异步函数失败,将catch错误并返回适当的HTTP响应。如果所有的异步函数都成功,将结果作为JSON字符串返回。如果您在开发过程中遇到类似的问题,建议使用这种方式来解决。