问题描述
我正在尝试让我的 express.js
应用程序在 AWS Lambda
上运行。部署(使用 serverless framework
成功完成,但是当我测试我的请求时应用程序返回 500 internal error
。我的日志显示了这个错误:
/var/task/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: invalid ELF header
。
我已尝试将 bcrypt
替换为 bcryptjs
,但问题仍然存在。
此外,在我的 serverless.yml
中,我添加了以下行以强制 lambda 自行安装 bcrypt
,但显然它没有成功:
package:
exclude:
- node_modules/**
有什么建议吗?
解决方法
首先,请包含节点模块。除了 aws-sdk
之外,AWS 不会在 lambda 节点环境中安装任何东西。
其次,您看到此错误是因为您可能是在 mac OS 机器上开发的,因此您机器上的 bycrypt
二进制文件最终会上传到 lambda。
请仔细检查当您尝试 bcryptjs
时,您是否从项目依赖项中完全删除了 bcrypt
。