【问题标题】:Elastic Beanstalk npm failingElastic Beanstalk npm 失败
【发布时间】:2017-08-03 20:14:40
【问题描述】:

我正在尝试将我的应用程序上传到 Elastic Beanstalk,但 npm 安装在 node-pre-gyp install --fallback-to-build 上失败。我尝试了各种版本的节点但无济于事。它似乎正在尝试获取一个不存在且不需要的 linux 软件包,它仅适用于 OSX(它在其中工作正常)。

解决方案似乎是使用 --no-optional 标志运行 npm install 但我找不到让 EB 使用此标志运行安装的方法。

此外,这个包似乎是 karma 的依赖项,我仅在 package.json 文件中将其作为 dev 依赖项。我可以看到 EB 正在使用 --production 标志进行安装,所以我不知道它首先要安装什么。

任何关于如何解决此问题的想法将不胜感激。

>     Running npm with --production flag
>       Failed to run npm install. Snapshot logs for more details.
>       Traceback (most recent call last):
>         File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 695, in <module>
>           main()
>         File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 677, in main
>           node_version_manager.run_npm_install(options.app_path)
>         File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 136, in run_npm_install
>           self.npm_install(bin_path, self.config_manager.get_container_config('app_staging_dir'))
>         File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 180, in npm_install
>           raise e
>       subprocess.CalledProcessError: Command '['/opt/elasticbeanstalk/node-install/node-v4.6.1-linux-x64/bin/npm',
> '--production', 'rebuild']' returned non-zero exit status 1
> (ElasticBeanstalk::ExternalInvocationError)
>     caused by: + /opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install
>       npm WARN package.json Room@1.0.0 No repository field.
>       npm WARN package.json Room@1.0.0 No README data
>       npm WARN package.json Room@1.0.0 No license field.
>       
>       > uglifyjs-webpack-plugin@0.2.1 postinstall /tmp/deployment/application/node_modules/uglifyjs-webpack-plugin
>       > node lib/post_install.js
>       
>       
>       > fsevents@1.0.15 install /tmp/deployment/application/node_modules/karma/node_modules/chokidar/node_modules/fsevents
>       > node-pre-gyp install --fallback-to-build
>       
>       node-pre-gyp ERR! Tried to download: https://fsevents-binaries.s3-us-west-2.amazonaws.com/v1.0.15/fse-v1.0.15-node-v46-linux-x64.tar.gz

【问题讨论】:

    标签: amazon-elastic-beanstalk npm-install


    【解决方案1】:

    我遇到了与 fallows 类似的错误

    当我查看更多详细信息部分时,我发现这是 bcrypt 库中的错误

    所以我删除了那个库并安装了bcryptjs 库并再次部署它,然后它就成功部署了。所以当有已弃用的库和不支持的库时,可能会出现这种错误。

    【讨论】:

    • 今天早上我遇到了同样的问题。卸载 bcrypt 并安装 ``` bcrypt-nodejs``` 对我有用。
    【解决方案2】:

    如果其他人遇到这个问题,我的问题出在我的 .gitignore 中,我有 node_modules 而不是 node_modules/,并且该文件夹正在被跟踪和部署。从部署中删除 node_modules 文件夹解决了这个问题。

    【讨论】:

      【解决方案3】:

      首先,转到

      检查您的日志
      1. 转到Elastic Beanstalk.
      2. 点击应用的环境名称
      3. 在侧边栏选择Logs
      4. 点击Request Logs并选择Last 100 LinesFull Log.
      5. 从您的日志中,您将看到 npm 失败的原因

      是时候修复它了!

      1. 如果它与gyp WARNgyp WARN EACCESSgyp ERR 相关,则在项目的根目录中创建一个名为 .npmrc 的文件。在此文件中,添加unsafe-perm=true。这将强制 npm 以 root 身份运行 node-gyp。

      2. 如果错误与无法安装的特定 npm 包有关,请考虑使用该包的替代方案。

      一切顺利!!

      【讨论】:

      • 第 6 步)为我做了。我试图在 EB/EC2 环境中运行 puppeteer。出于某种原因,如果没有带有命令行unsafe-perm=true.npmrc 文件,puppeteer 将无法安装。我不确定这会产生什么影响(显然您是以 root 用户身份安装软件包?)。
      • 很好,这就像有一个公式
      猜你喜欢
      • 2018-12-10
      • 2021-02-26
      • 2021-06-21
      • 2021-08-15
      • 2014-10-27
      • 2015-12-15
      • 1970-01-01
      • 2019-04-20
      • 2015-12-17
      相关资源
      最近更新 更多