在AWS Lambda中使用async关键字

时间:2017-10-12 07:11:22

标签: javascript node.js amazon-web-services aws-lambda

我使用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。有办法还是我应该放弃这种方法并回到使用回调?

4 个答案:

答案 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一起使用。