我正在尝试将我的节点项目上传到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 unzip
和node-unzipper
导致express.js
核心目录中出现一些奇怪的错误。最糟糕的情况我可以寻找一个新的模块,但我希望能够找到这个模块。
有关如何解决此错误的任何想法?谢谢!
答案 0 :(得分:0)
minizip在安装时自行编译一个本机模块。这意味着如果您在具有最新版本的kernel / libC / libC ++的计算机上进行编译...您可以使用服务器上不存在的功能,并最终解决您的问题。
因此,如果您拥有使用本机库的模块,那么您将在类似于服务器应用程序的环境中更好地构建应用程序。
亚马逊提供模仿lambda环境的AMI,从中生成部署zip文件并进行部署。应该没问题。