我使用Node.js玩AWS Lambda。在厌倦了不得不处理回调之后,我想我可以优雅地使用async/await
,就像我习惯于在C#中一样。
exports.handler = async(event, context, callback) => {
db = await MongoClient.connect(process.env['MONGODB_URI']);
}
即使使用lambda-local
离线测试时这似乎有效,但在上传到AWS时它会失败。看起来似乎无法识别async
关键字。我在AWS上使用最新的Node.js 6.10运行时,而我的本地版本是8.5。有办法还是我应该放弃这种方法并回到使用回调?
答案 0 :(得分:6)
async/await
功能是在Node.js v7.0中启动的,但是在--harmony
标志后面,因为它是实验性的。在Node.js v7.6之后,没有标志完全支持它。
因此,您无法在Node.js v6.10中使用async/await
。
查看here以确切了解支持哪些版本。
答案 1 :(得分:5)
You can bundle your lambda with webpack and babel to write node 8 code and deploy node 6 compatible code.
The easiest way to do this is to use the serverless framework with plugins like :
答案 2 :(得分:3)
自1985年4月2日起,AWS Lambda中提供了Node.js v8.10运行时。请点击以下链接获取更多信息:
https://aws.amazon.com/blogs/compute/node-js-8-10-runtime-now-available-in-aws-lambda/
答案 3 :(得分:2)
您也可以在Typescript中编写处理程序,它可以将您的代码编译为ES5。
您可以将async/await
与Typescript一起使用。