无法在AWS Elastic beantalk上npm安装bcrypt 3.0.6?

时间:2019-07-04 18:25:09

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

我已经使用最新平台(运行在64位Amazon Linux / 4.9.2上的Nodejs)和最新可用的节点版本(10.16.0)将节点应用程序部署到AWS Elastic beantalk中。

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

但是,如果我尝试更新到最新版本的bcrypt ^ 3.0.6,则在部署期间弹性beantalk失败,并显示以下错误:

  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的站点上,提到了a permissions issue以及aws和bcrypt以及建议的修复程序。但是,此修复程序不适用于我。这似乎是一个不同的问题。

之前有人遇到过吗?

6 个答案:

答案 0 :(得分:1)

降级到3.0.0和3.0.5之间的bcrypt版本。使用Node版本10.14.x至10.16.x时,我遇到了相同的问题

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

答案 1 :(得分:1)

节点10的

bcrypt版本3.0.5具有相同的问题。我不得不将bcrypt降级到3.0.4版本

奇怪的是,当前npm上的bcrypt文档说3.0.6用于节点12,而先前bcrypt版本的文档说3.0.5用于节点12。

答案 2 :(得分:0)

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

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


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

unsafe-perm = true


现在,您的bcrypt将被安装,不会打h。

答案 3 :(得分:0)

尝试使用bcryptjs模块而不是更新/最新npm模块bcrypt。

运行npm install bcryptjs,然后运行npm install 最初回答here

答案 4 :(得分:0)

我遇到了同样的问题,就我而言,该问题与bcrypt无关,而与node-gyp无关,无法为安装创建临时目录

我的修复程序将bcrypt更改为bcryptjs,但该软件包的更新版本

另一个解决方法是在应用程序的内部版本中添加一个.npmrc文件,其内容如下: unsafe-perm = true

这将使npm始终以root身份运行

答案 5 :(得分:0)

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

命令

npm install --save bcryptjs