AWS Elastic BeanStalk Node.js部署错误

时间:2018-09-18 06:15:18

标签: node.js amazon-web-services npm

最近两天,我陷入了一个非常奇怪的问题。我正在尝试在AWS Elastic beantalk上部署我的webpack nodejs应用程序。 环境健康确定更改为降级。我已经部署了很多次,但没有发生此类问题。首先,查看日志:

/var/log/eb-activity.log

  

/opt/elasticbeanstalk/containerfiles/ebnode.py --action节点安装   活动执行失败,原因是:+   /opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install

     

npm错误!路径   /tmp/deployment/application/node_modules/grpc/node_modules/.bin/node-pre-gyp   npm ERR!代码EEXIST npm ERR!拒绝删除   /tmp/deployment/application/node_modules/grpc/node_modules/.bin/node-pre-gyp:   在外面   / tmp / deployment / application / node_modules / grpc / node_modules / node-pre-gyp   而不是链接

     

npm错误!文件已存在:   /tmp/deployment/application/node_modules/grpc/node_modules/.bin/node-pre-gyp   npm ERR!将其移开,然后重试。        npm ERR!可以在以下位置找到该运行的完整日志:npm ERR! /tmp/.npm/_logs/2018-09-18T05_49_17_967Z-debug.log运行npm   安装:   /opt/elasticbeanstalk/node-install/node-v8.9.3-linux-x64/bin/npm
  将npm配置作业设置为1 npm配置作业设置为1运行npm   使用--production标志时,无法运行npm install。的快照日志   更多细节。 UTC 2018/09/18 05:49:17找不到应用程序npm   调试日志位于/tmp/deployment/application/npm-debug.log        追溯(最近一次通话):       文件“ /opt/elasticbeanstalk/containerfiles/ebnode.py”,行695,在         主要()       主目录中的文件“ /opt/elasticbeanstalk/containerfiles/ebnode.py”,行677         node_version_manager.run_npm_install(options.app_path)       在run_npm_install中的文件“ /opt/elasticbeanstalk/containerfiles/ebnode.py”,第136行         self.npm_install(bin_path,self.config_manager.get_container_config('app_staging_dir'))       npm_install中的文件“ /opt/elasticbeanstalk/containerfiles/ebnode.py”,第180行         提高e subprocess.CalledProcessError:命令'['/opt/elasticbeanstalk/node-install/node-v8.9.3-linux-x64/bin/npm',   '--production','install']'返回非零退出状态1   (ElasticBeanstalk :: ExternalInvocationError)

现在该错误是某些 node-gyp 模块引起的,请相信我,我之前从未听说过。我正在寻找一种解决方案,以便我可以继续工作,因为在老板面前,这对于我来说确实是一个令人尴尬的情况。您的帮助可以使我摆脱这种情况。

谢谢

1 个答案:

答案 0 :(得分:2)

我在各种节点模块上都有相同的问题。当我使用express init创建了最初的NodeJs Express项目时,这是一个简单的玩具项目。

我发现了许多有关将文件添加到.ebextensions文件夹的帖子,并最终使用了该版本:

在.ebextensions文件夹中创建一个名为01_delete_node_modules.config的文件,并添加以下内容:

files: "/opt/elasticbeanstalk/hooks/appdeploy/pre/49_delete_node_modules.sh": mode: "000755" owner: root group: root content: | #!/usr/bin/env bash sudo rm -rf /tmp/deployment/application/node_modules

对乔什·哈里斯(Josh Harris)的博客文章的怀疑: https://medium.com/@jharris.sf/npm-rebuild-elastic-beanstalk-and-permissions-be1c6fceba9a