【问题标题】:Using async keyword in AWS Lambda在 AWS Lambda 中使用 async 关键字
【发布时间】:2018-03-24 00:45:24
【问题描述】:

我正在使用 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。有没有办法或者我应该放弃这种方法并重新使用回调?

【问题讨论】:

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


    【解决方案1】:

    async/await 功能是在 Node.js v7.0 中启动的,但由于它是实验性的,所以它位于 --harmony 标志后面。在 Node.js v7.6 之后完全支持不带标志。

    因此,您不能将 async/await 与 Node.js v6.10 一起使用。

    查看here 以确切了解支持哪些版本。

    【讨论】:

      【解决方案2】:

      您可以将您的 lambda 与 webpack 和 babel 捆绑在一起,以编写 node 8 代码并部署 node 6 兼容代码。

      最简单的方法是使用serverless framework 和插件,例如:

      【讨论】:

        【解决方案3】:

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

        您可以将async/await 与 Typescript 一起使用。

        【讨论】:

          【解决方案4】:

          Node.js v8.10 运行时自 2018 年 4 月 2 日起在 AWS Lambda 中可用。点击以下链接了解更多信息:

          https://aws.amazon.com/blogs/compute/node-js-8-10-runtime-now-available-in-aws-lambda/

          【讨论】:

            猜你喜欢
            • 2019-09-14
            • 2019-11-27
            • 2012-02-04
            • 2014-03-05
            • 2022-01-27
            • 2019-07-27
            • 1970-01-01
            • 2023-03-12
            • 2021-06-26
            相关资源
            最近更新 更多