【问题标题】:npm install with AWS Lambda使用 AWS Lambda 安装 npm
【发布时间】:2016-07-04 21:59:02
【问题描述】:

我正在用 Javascript 编写 AWS Lambda 函数。 我需要使用 synchronize.js 库,所以我运行了npm install synchronize。 在本地一切正常,但是当我将 *.zip 上传到 AWS 并运行时,它会出现以下错误:

  "errorMessage": "`/var/task/node_modules/fibers/bin/linux-x64-v8-3.14/fibers.node` is missing. Try reinstalling `node-fibers`?"

我认为它需要 npm 安装不同的二进制文件版本。我该如何解决?

【问题讨论】:

  • AWS Lambda 在运行前未运行 npm install。您使用的任何库也应该压缩。 source
  • 我在 zip 文件中包含 node_modules 目录。亚马逊试图找到 node_modules/fibers/bin/linux-x64-v8-3.14/.. 但 npm 安装 node_modules/fibers/bin/linux-x64-v8-4.6 文件夹

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


【解决方案1】:

由于 AWS Lambda 不会为您执行 npm install,因此任何需要二进制构建步骤的 npm 模块都可能会遇到问题,具体取决于模块的功能、构建方式等。我不熟悉 synchronize.js,但它可能需要在 Amazon Linux 上构建才能在 AWS Lambda 中取得成功。

所以你必须:

  1. 在运行 Amazon Linux 的机器上执行 npm install synchronize,然后从那里进行部署。
  2. 用异步代码(回调、承诺或异步库)替换 synchronize.js

一般来说,如果可能的话,我会推荐#2。你实际上并没有问一个具体的问题,所以我不确定这对你有用,但希望这能给你一些方向。

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 2021-04-11
    相关资源
    最近更新 更多