amazon-web-services - AWS Elastic Beanstalk 无效的二进制包

标签 amazon-web-services heroku amazon-elastic-beanstalk

我正在致力于将项目从 Heroku 迁移到 AWS。部署后我不断收到错误消息:“无效的 ELF header ”。我在使用 AWS Lambda 时发现了类似问题的帖子,但我不明白为什么 Elastic Beanstalk 中的二进制包会出现问题。

Elastic Beanstalk 不提供类似于 Docker 的已配置环境来运行我的代码吗?我觉得这个问题一定更复杂,因为我在 Elastic Beanstalk 中找不到其他人遇到这个问题。

这是我收到的确切错误:

Error: /var/app/current/node_modules/bcrypt/lib/binding/bcrypt_lib.node: invalid ELF header
at Object.Module._extensions..node (internal/modules/cjs/loader.js:730:18)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (/var/app/current/node_modules/bcrypt/bcrypt.js:6:16)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1a787f7f685a2a342b342a" rel="noreferrer noopener nofollow">[email protected]</a> start: `node server/server.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="afcdcacaddef9f819e819f" rel="noreferrer noopener nofollow">[email protected]</a> start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /tmp/.npm/_logs/2019-04-15T00_54_06_983Z-debug.log

我在 Mac 上工作,我的代码包含用 React、node.js 和 SQL 编写的客户端和服务器代码。我正在通过包含多个文件夹的 ZIP 文件上传代码,其中包括 node_modules/

最佳答案

某些库对其构建所在的操作系统和/或 CPU 架构敏感。对于用低级语言实现的模块或链接到系统库的模块尤其如此。在本例中,您似乎正在使用 bcrypt这是 largely written in C++ .

这是您上传到 Elastic Beanstalk 的 zip 文件不应包含 node_modules/ 文件夹(或 Git 忽略的其他任何内容)的原因之一。创建 zip 以上传到 Elastic Beanstalk 的最简单方法是 probably to use git archive :

 git archive -v -o myapp.zip --format=zip HEAD

这会尊重您的忽略,而 manually zipping将包括它们。

您的存档应在其根目录中包含 package.jsonpackage-lock.json。 Elastic Beanstalk will install its own node_modules/ from these files如果他们在场的话。这应该确保所有库都与其操作系统兼容。

关于amazon-web-services - AWS Elastic Beanstalk 无效的二进制包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55814769/

相关文章:

java - 在网络级别上在 AWS 和 localstack 之间切换

docker - 将 docker 镜像部署到 heroku

php - sqlstate[42703] 在 heroku 上是什么意思?

multithreading - Spring Boot 应用程序可以同时处理多个请求吗?

amazon-web-services - AWS EMR 上的主公共(public) DNS 为空

java - AWS SWF Flow Activity 开始关闭超时是否包括 Activity 重试?

Heroku - 将子树推送到不同的应用程序

java - Java计划任务是否在AWS Auto Scaling组的所有EC2实例上运行?

node.js - 多个 AWS 实例和 Node 事件

ios - S3TransferManager 无法在 ios 中的 S3GetObjectRequest targetedFilePath 上保存文件/数据