AWS Elastic BeanStalk nodejs 部署错误

Usm*_*man 3 amazon-web-services node.js npm

过去两天我陷入了一个非常奇怪的问题。我正在尝试在 AWS elastic beanstalk 上部署我的 webpack nodejs 应用程序。环境健康状况OK更改为Degraded。我之前已经部署过很多次了,但是没有出现这样的问题。首先看日志:

/var/log/eb-activity.log

/opt/elasticbeanstalk/containerfiles/ebnode.py --action node-install 活动执行失败,因为: + /opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install

npm 错误!路径 /tmp/deployment/application/node_modules/grpc/node_modules/.bin/node-pre-gyp npm 错误!代码 EEXIST npm 错误!拒绝删除 /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 错误!将其移开,然后重试。npm 错误!可以在以下位置找到此运行的完整日志:npm ERR!/tmp/.npm/_logs/2018-09-18T05_49_17_967Z-debug.log 运行 npm install:/opt/elasticbeanstalk/node-install/node-v8.9.3-linux-x64/bin/npm
将 npm 配置作业设置为 1 npm配置作业设置为 1 使用 --product 标志运行 npm 无法运行 npm install。快照日志以获取更多详细信息。UTC 2018/09/18 05:49:17 在 /tmp/deployment/application/npm-debug.log 找不到应用程序 npm 调试日志回溯(最近一次调用):文件“/opt/elasticbeanstalk/containerfiles/ebnode.py “,第 695 行,在 main() 文件“/opt/elasticbeanstalk/containerfiles/ebnode.py”中,第 677 行,在主 node_version_manager.run_npm_install(options.app_path) 文件“/opt/elasticbeanstalk/containerfiles/ebnode.py”中,第 136 行,在 run_npm_install self.npm_install(bin_path, self.config_manager.get_container_config('app_staging_dir')) 文件“/opt/elasticbeanstalk/containerfiles/ebnode.py”,第 180 行,在 npm_install 中 raise e subprocess.CalledProcessError: Command '[ '/opt/elasticbeanstalk/node-install/node-v8.9.3-linux-x64/bin/npm'、'--product'、'install']' 返回非零退出状态 1 (ElasticBeanstalk::ExternalInitationError)

现在错误是某个node-gyp模块的错误,相信我,我以前没有听说过。我正在寻找解决方案,以便我可以继续我的工作,因为这对我来说在老板面前确实是一个尴尬的情况。你的帮助可以让我摆脱这种困境。

谢谢

小智 5

我对各种节点模块也有同样的问题。这是一个简单的玩具项目,我使用express init.

我找到了有关将文件添加到 .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
Run Code Online (Sandbox Code Playgroud)

感谢 Josh Harris 的这篇博文: https://medium.com/@jharris.sf/npm-rebuild-elastic-beanstalk-and-permissions-be1c6fceba9a