我已经使用最新平台(运行在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以及建议的修复程序。但是,此修复程序不适用于我。这似乎是一个不同的问题。
之前有人遇到过吗?
答案 0 :(得分:1)
降级到3.0.0和3.0.5之间的bcrypt版本。使用Node版本10.14.x至10.16.x时,我遇到了相同的问题
我相信bcrypt 3.0.6适用于节点版本> = 12.x
答案 1 :(得分:1)
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