Node.js 无法在aws elastic beanstalk上npm安装bcrypt 3.0.6?
我在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在部署期间会失败,并出现以下错误:Node.js 无法在aws elastic beanstalk上npm安装bcrypt 3.0.6?,node.js,amazon-web-services,amazon-elastic-beanstalk,bcrypt,Node.js,Amazon Web Services,Amazon Elastic Beanstalk,Bcrypt,我在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 Fun
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.
错误:找不到模块'../'
位于Function.Module.\u resolveFilename(internal/modules/cjs/loader.js:636:15)
at Function.Module._load(内部/modules/cjs/loader.js:562:25)
at Module.require(内部/modules/cjs/loader.js:690:17)
根据需要(内部/modules/cjs/helpers.js:25:18)
反对。使用aws和bcrypt,以及建议的修复。但是,修复对我不起作用。这似乎是另一个问题
以前有人遇到过这种情况吗 降级到3.0.0和3.0.5之间的bcrypt版本。在使用节点版本10.14.x到10.16.x运行时,我遇到了相同的问题
我相信bcrypt 3.0.6适用于节点版本>=12.xbcrypt版本3.0.5和节点10存在相同的问题。我不得不将bcrypt降级到3.0.4版
奇怪的是,npm上当前的bcrypt文档称3.0.6适用于节点12,但先前版本的bcrypt文档称3.0.5适用于节点12。像bcrypt和sharp这样进行图像处理和加密的包需要额外的权限。因此,您必须创建一个.npmrc文件,并授予在服务器中以root用户身份运行这些文件的权限。这样,您就不会出现“权限拒绝”错误,并自动安装此类软件包
在.npmrc文件中粘贴以下内容
#强制npm以root用户身份运行节点gyp,以防止AWS中的权限拒绝错误npm@5
不安全perm=true
现在,您的bcrypt将在没有任何问题的情况下安装。尝试使用bcryptjs模块,而不是bcrypt,它是一个更新/最新的npm模块
运行npm install bcryptjs,然后运行npm install
最初回答时我遇到了相同的问题,在我的例子中,问题与bcrypt无关,而是与节点gyp无法为安装创建临时目录有关
我的修复程序将bcrypt更改为bcryptjs,这是该软件包的更新版本
另一个解决方法是在应用程序的构建中添加一个.npmrc文件,其中包含以下内容:
不安全perm=true
这将允许npm始终在根目录下运行我是否正在安装bcrypt^3.0.7和引擎:{node:“v12.16.3”}
在elastic beanstalk上失败