【问题标题】:Unable to npm install bcrypt 3.0.6 on aws elastic beanstalk?无法在 aws elastic beanstalk 上 npm install bcrypt 3.0.6?
【发布时间】:2019-11-15 11:37:36
【问题描述】:

我有一个节点应用程序部署到 aws elastic beanstalk,使用最新平台(在 64 位 Amazon Linux/4.9.2 上运行的 Nodejs)和最新的可用节点版本 (10.16.0)

在 package.json 文件中,只要我安装 bcrypt ^2.0.1,一切正常。

但是,如果我尝试更新到最新版本的 bcrypt ^3.0.6,elastic beanstalk 在部署期间会失败并出现以下错误:

  Error: Cannot find module '../'
      at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
      at Function.Module._load (internal/modules/cjs/loader.js:562:25)
      at Module.require (internal/modules/cjs/loader.js:690:17)
      at require (internal/modules/cjs/helpers.js:25:18)
      at Object.<anonymous> (/tmp/deployment/application/node_modules/.bin/node-pre-gyp:15:20)
      at Module._compile (internal/modules/cjs/loader.js:776:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
      at Module.load (internal/modules/cjs/loader.js:653:32)
      at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
      at Function.Module._load (internal/modules/cjs/loader.js:585:3)
  npm ERR! code ELIFECYCLE
  npm ERR! errno 1
  npm ERR! bcrypt@3.0.6 install: `node-pre-gyp install --fallback-to-build`
  npm ERR! Exit status 1
  npm ERR! 
  npm ERR! Failed at the bcrypt@3.0.6 install script.
  npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

在 bcrypt 的网站上,提到了带有 aws 和 bcrypt 的 a permissions issue,并提出了修复建议。但是,修复对我不起作用。这似乎是一个不同的问题。

有没有其他人遇到过这种情况?

【问题讨论】:

    标签: node.js amazon-web-services amazon-elastic-beanstalk bcrypt


    【解决方案1】:

    我们可以通过在您的项目中安装已编译的 bcrypt 版本(即“bcryptjs”)来解决此问题。我在 AWS 中遇到了类似的问题,已通过此方法解决(bcryptjs 版本:2.4.3)。

    命令

    npm install --save bcryptjs
    

    【讨论】:

      【解决方案2】:

      像 bcrypt 和 sharp 等进行图像处理和加密的软件包需要额外的权限。因此,您必须创建一个 .npmrc 文件并授予访问权限以在服务器中以 root 身份运行它们。这样,您将不会收到权限被拒绝错误并自动安装此类包。

      在 .npmrc 文件中粘贴以下内容


      #Force npm 也以 root 身份运行 node-gyp,防止使用 npm@5 在 AWS 中出现权限被拒绝错误

      unsafe-perm=true


      现在,您的 bcrypt 将顺利安装。

      【讨论】:

        【解决方案3】:

        我有同样的问题,在我的情况下,问题与 bcrypt 无关,而是 node-gyp 无法为安装创建临时目录

        我的修复是将 bcrypt 更改为 bcryptjs,这是该软件包的更新版本

        另一种解决方法是在应用程序的构建中添加一个 .npmrc 文件,其中包含以下内容: unsafe-perm=true

        这将允许 npm 始终以 root 身份运行

        【讨论】:

          【解决方案4】:

          尝试使用 bcryptjs 模块而不是 bcrypt,它是一个更新/最新的 npm 模块。

          运行 npm install bcryptjs 然后 npm install 原回答here

          【讨论】:

            【解决方案5】:

            bcrypt 版本 3.0.5 与 Node 10 有同样的问题。我不得不将 bcrypt 降级到 3.0.4 版

            奇怪的是,npm 上的当前 bcrypt 文档说 3.0.6 用于 Node 12,但之前 bcrypt 版本的文档说 3.0.5 用于 Node 12。

            【讨论】:

              【解决方案6】:

              降级到 3.0.0 和 3.0.5 之间的 bcrypt 版本。我在使用 Node 版本 10.14.x 到 10.16.x 运行时遇到了同样的问题

              我相信 bcrypt 3.0.6 适用于 Node 版本 >= 12.x

              【讨论】:

              • 我安装 bcrypt ^3.0.7 和 engines: { node: "v12.16.3" } 在弹性豆茎上失败
              猜你喜欢
              • 2018-04-12
              • 2019-12-22
              • 2019-07-15
              • 1970-01-01
              • 2014-10-15
              • 2017-11-09
              • 2016-10-11
              • 2020-10-13
              • 2021-02-26
              相关资源
              最近更新 更多