在AWS Lambda中使用async关键字

我正在使用Node.js使用AWS Lambda。 在厌倦了处理callback之后,我想我可以优雅地使用async/await ,就像我在C#中习惯的那样。

 exports.handler = async(event, context, callback) => { db = await MongoClient.connect(process.env['MONGODB_URI']); } 

尽pipe在使用lambda-local进行离线testing时这看起来很有效,但是当上传到AWS时却失败了。 它看起来好像async关键字不被识别。 我在AWS上使用最新的Node.js 6.10运行时,而本地版本是8.5。 有没有办法,或者我应该放弃这种方法,并回到使用callback?

async/awaitfunction是在Node.js v7.0中启动的,但是在--harmony标志后面,因为它是实验性的。 完全支持Node.js v7.6之后没有标志。

因此,您不能使用Node.js v6.10的async/await

看看这里确切地知道支持哪些版本。

你可以绑定你的lambda与webpack和babel写节点8代码和部署节点6兼容的代码。

最简单的方法是使用无服务器框架 ,插件如下:

  • 无服务器-的WebPack
  • 无服务器-ES7

你也可以在Typescript中编写你的处理程序,它可以将你的代码编译成ES5。

您可以使用Typescript进行async/await