无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1

Posted

技术标签:

【中文标题】无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1【英文标题】:Fail to deploy node on Elastic Beanstalk : The command '/bin/sh -c npm install' returned a non-zero code: 1 【发布时间】:2019-08-27 08:09:22 【问题描述】:

我正在使用 AWS 的弹性 beanstalk 来部署和托管使用 Docker 的 React 应用程序。

尽管我在本地机器上成功构建了 Docker 映像,但部署却神秘地失败了。 检查 EC2 实例上的日志(使用 eb ssh)没有提供更多解释:

--------------------------------
/var/log/eb-commandprocessor.log
--------------------------------
Step 5/14 : COPY package.json /usr/src/app/package.json
---> Using cache
---> f06f2c9d6519
Step 6/14 : RUN npm install
---> Running in 9926fc11431f
The command '/bin/sh -c npm install' returned a non-zero code: 1
Failed to build Docker image aws_beanstalk/staging-app: 2c9d6519

我什至尝试使用

在已构建容器的最后一层内运行 npm install 命令
sudo docker commit 9926fc11431f test && docker run -it test bash
cd /path/to/wordir
npm install 

但返回码其实是0

还有其他方法可能会失败并且日志会返回错误的错误吗?

【问题讨论】:

你解决过这个问题吗?我遇到了同样的问题,无法找到解决方案 我从来没有解决过这个问题。我最终使用 kubernetes 引擎而不是 beanstalk 并分别构建我的图像。另一种解决方案是将依赖项存储在存储库中,这样您就可以跳过映像中的 npm install (但我不知道这是否是一种好习惯) 【参考方案1】:

我正在为任何由此而来的未来人写这个答案。 如果没有 NPM 错误消息。问题是内存耗尽有两种方法可以在 Beanstalk 上专门解决这个问题:

使用内存更大的机器(而不是说 t2.micro) (推荐)切换到yarn。 Yarn 使用的内存比 npm 少得多。 想办法减少内存占用

这个问题让我很头疼,所以我希望这对以后遇到这个问题的人有所帮助。

【讨论】:

以上是关于无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1的主要内容,如果未能解决你的问题,请参考以下文章

Elastic beanstalk [Rails] 部署问题 - 无法分配内存

无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1

AWS Elastic Beanstalk 错误我无法部署

在 Elastic Beanstalk 上部署 Pyramid 应用程序

在 AWS Elastic Beanstalk 上部署后运行 PHP 脚本

无法从 Elastic Beanstalk 连接到 Amazon SimpleDB