Elastic Beanstalk 在启动脚本时失败

Posted

技术标签:

【中文标题】Elastic Beanstalk 在启动脚本时失败【英文标题】:Elastic Beanstalk fails at start script 【发布时间】:2018-05-09 09:56:52 【问题描述】:

我正在尝试将 Node.js 应用程序部署到弹性 beanstalk。问题是,它每次都在启动脚本中失败。我已将 ec2 配置为使用启动脚本 npm start,它执行 node app.js(在 package.json 中定义)。但是,此启动脚本在 ec2 中失败。我收到记录的错误,

npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the myProject start script 'node app.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the Portfolio package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node app.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs myProject
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls myProject
npm ERR! There is likely additional logging output above.

这是什么意思?在我的命令行上运行 npm start 在压缩到 AWS 的同一应用程序的根目录中运行良好,在 localhost 上运行。我还更新了 npm 和 node.js

这是压缩后部署的文件结构:

.zip

node_modules/ 公开/ app.js package.json package-lock.json

【问题讨论】:

【参考方案1】:

我在 Elastic Beanstalk 上遇到了类似症状的问题,这是由于缺少 npm 依赖项引起的。一些依赖项是本地安装在 node_modules 中的,但是我们在全局安装了一两个依赖项,导致在压缩部署时无法打包它们。不幸的是,Elastic Beanstalk 的错误消息在这种情况下没有多大帮助,并给出了一般错误。

【讨论】:

你找到解决办法了吗? 是的。首先,确保您的项目所依赖的所有 npm 依赖项都存在于您的 package.json 文件中。然后将终端或命令行中的目录切换到项目的根目录并运行npm install,这将确保您的node_modules 文件夹填充有package.json 文件指定的正确依赖项。如需更多帮助,请参阅this question!

以上是关于Elastic Beanstalk 在启动脚本时失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Elastic Beanstalk 上启动时运行一次 python 脚本

在 Elastic Beanstalk 上自动启动 Celery

以 root 身份运行 Node.js 脚本的 Elastic beanstalk

Elastic Beanstalk 的 Hostmanager 无法启动 Apache,EBS 连接缓慢

PHP AWS Elastic Beanstalk 后台工作者

在 aws elastic beanstalk 中创建 .ebextensions 文件夹