节点minizip的AWS Lambda依赖性错误

时间:2017-08-08 18:33:05

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

我正在尝试将我的节点项目上传到AWS Lambda,但是当我测试它时,我从lambda控制台收到此错误:

{
  "errorMessage": "/var/lang/lib/libstdc++.so.6: version GLIBCXX_3.4.21' not found (required by /var/task/node_modules/node-minizip/build/Release/node-minizip.node)",
  "errorType": "Error",
  "stackTrace": [
    "Object.Module._extensions..node (module.js:597:18)",
    "Module.load (module.js:487:32)",
    "tryModuleLoad (module.js:446:12)",
    "Function.Module._load (module.js:438:3)",
    "Module.require (module.js:497:17)",
    "require (internal/module.js:20:19)",
    "Object.<anonymous> (/var/task/node_modules/node-minizip/main.js:1:80)",
    "Module._compile (module.js:570:32)",
    "Object.Module._extensions..js (module.js:579:10)"
  ]
}

似乎有一个缺少的非节点库正在尝试运行,但我似乎无法找到如何在Lambda端修复它。它在我的电脑上运行得很好。我在快递中使用node-minizip来解压缩我以编程方式获取的文件。我尝试切换到其他一些模块,但node unzipnode-unzipper导致express.js核心目录中出现一些奇怪的错误。最糟糕的情况我可以寻找一个新的模块,但我希望能够找到这个模块。

有关如何解决此错误的任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

祝你好运。 Minizip使用原生lib&#34; zlib&#34;, 通常,您有两种管理原生的方式:

  • 在构建应用程序时编译lib(这需要服务器上的编译工具)
  • 在设置时下载与您的操作系统相对应的本机库。 (构建需要是最通用的,以防止不兼容)

minizip在安装时自行编译一个本机模块。这意味着如果您在具有最新版本的kernel / libC / libC ++的计算机上进行编译...您可以使用服务器上不存在的功能,并最终解决您的问题。

因此,如果您拥有使用本机库的模块,那么您将在类似于服务器应用程序的环境中更好地构建应用程序。

亚马逊提供模仿lambda环境的AMI,从中生成部署zip文件并进行部署。应该没问题。