我有一个lambda表达式,它可以很好地在localhost上使用serverless。
但是在使用lambda进行部署时,我遇到了以下错误:
"errorMessage": "/var/lang/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /var/task/node_modules/scrypt/build/Release/scrypt.node)",
"errorType": "Error",
"stackTrace": [
"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/scrypt/index.js:3:20)",
"Module._compile (module.js:570:32)",
"Object.Module._extensions..js (module.js:579:10)",
"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/scrypt.js/node.js:1:76)",
"Module._compile (module.js:570:32)",
"Object.Module._extensions..js (module.js:579:10)",
"Module.load (module.js:487:32)",
"tryModuleLoad (module.js:446:12)",
"Function.Module._load (module.js:438:3)",
"Module.require (module.js:497:17)"
]我还没有找到任何关于这方面的东西,那么,有没有人可以提供帮助呢?
发布于 2018-05-23 08:05:25
根据AWS documentation的说法
原生模块的安装和部署都是类似的,但是您需要根据Amazon Linux库构建它们。
因此,启动一个EC2实例,在那里构建您的项目,将其压缩,然后将其上传到Lambda。你使用的Amazon Linux AMI似乎会有所不同……可能是因为它们是不同的架构,或者有不同的库版本,或者别的什么。在我的例子中(使用x509模块构建一个NodeJS项目),Amazon Linux2AMI ( AMI -922914f7)无法工作;它导致的错误与您的非常相似。如果您尝试此方法,但它不起作用,请尝试在原始的Amazon Linux AMI (ami-2a0f324f)上重新构建它。在我这样做之后,它在Lambda中运行得很完美。
感谢@Tommaso提供了这个解决方案背后的灵感。
发布于 2017-12-21 21:22:22
当您将节点依赖项打包到具有不同架构的系统上时,会发生这种情况(由于某些依赖项具有在您的系统中编译的本机代码,这与AWS Lambda不同)
在将模块上传到亚马逊网络服务之前,先运行docker run -v "$PWD":/var/task lambci/lambda:build-nodejs6.10而不是npm install,以便在类似于AWS Lambda的环境中设置依赖项。
https://stackoverflow.com/questions/47693281
复制相似问题