我正在使用使用bcrypt-as-promised
的旧项目中的旧代码库(在bcrypt
允许使用诺言之前)。当我尝试npm install
和package.json
时,收到该程序包的错误消息:
npm WARN不建议使用bcrypt-as-promised@1.1.0:bcrypt模块现在支持promises,不再需要该模块
npm WARN不建议使用bcrypt@0.8.7:bcrypt
= v2.0.0,以更好地支持新的bcrypt哈希
然后失败(如果需要,我可以粘贴更多错误消息)。
我对如何才能获得现在已弃用的软件包进行安装感到有些困惑。我曾考虑过将代码库修改为仅使用bcrypt
(支持现在的原生Promise),但是我担心陷入蜂巢并破坏应用程序。我首先想知道是否可能有一种方法可以为旧代码库安装此软件包,以使其正常工作。
有什么想法吗?感谢您的宝贵时间和宝贵的见解。
我的package.json:https://github.com/twknab/mean_hike/blob/master/package.json
//编辑:
这是我尝试sudo npm install
时收到的完整的终端消息:
> bcrypt@0.8.7 install /var/www/mean_hike/node_modules/bcrypt
> node-gyp rebuild
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir
'/var/www/mean_hike/node_modules/bcrypt/build'
gyp ERR! System Linux 4.4.0-1072-aws
gyp ERR! command "/usr/local/bin/node"
"/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /var/www/mean_hike/node_modules/bcrypt
gyp ERR! node -v v11.2.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bcrypt@0.8.7 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bcrypt@0.8.7 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/ubuntu/.npm/_logs/2018-11-27T10_46_27_925Z-debug.log
答案 0 :(得分:1)
较早版本的bcrypt可能安装起来很棘手,看起来您遇到了npm的经典权限问题。您可以在此处尝试官方文档中列出的一些技巧:https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
...但是与此同时,请尝试以下几件事:
npm install node-gyp -g
node_modules
目录的所有权:
sudo chown -r XXX /usr/lib/node_modules/
(假设是在这里
当然,全局模块目录位于您的计算机上。答案 1 :(得分:1)
我发现我的问题的解决方案是使用yarn
导入我的所有依赖关系而不是npm
,同时也将bcrypt-as-promised
换成bcrypt
(现在包括许诺,无需更改语法。
我抛弃了bcrypt-as-promised
,并在bcrypt
文件中将其替换为package.json
。
然后我将require('bcrypt-as-promised')
的任何实例更改为require('bcrypt')
(使用bcrypt
的语法保持不变,只是依赖项导入行需要更改)。
在不使用yarn
的情况下,即使更改了文件夹权限,我仍然遇到权限“ EACCES:权限被拒绝”错误,只有bcrypt
失败。我的npm和node版本看起来不错。确保我的Ubuntu盒子已全部更新。
那是我从一个明智的朋友那里得到的建议,尝试使用yarn
来代替依赖项。我运行了yarn import
,它会读取package.json
文件并创建一个yarn.lock
文件。然后,我在自己的ubuntu计算机(yarn
)上安装了sudo npm install yarn -g
,并运行yarn install
,并成功安装了 bcrypt
!
如果最初使用npm
安装了sudo
依赖项,则尝试安装bcrypt
时可能会遇到权限问题。我改进的解决方案是:
./node_modules
来sudo rm -r ./node_modules
文件夹sudo
)。npm i --save bcrypt
安装软件包
成功。这是GitHub上的链接,可帮助我找到解决方案和摘录:
@Mayocampo权限被拒绝,mkdir '/ home / someroute / node_modules / bcrypt / build'
似乎您以root身份运行rpm,因此您的帐户无法
mkdir
在/ home / someroute / node_modules /下,使用ls -l /home/someroute/node_modules/
检查目录。确定上级目录的所有者是root。要么 您的帐户没有权限。我想有两种选择。
sudo rm -r ./node_modules
并通过npm安装软件包 再次,但不使用sudo。- 将mod ./node_module更改为可访问和可执行。我先决定了,然后决定了