如何从旧代码库中将“ bcrypt-as-promised”安装到我的Ubuntu盒子上?

时间:2018-11-27 09:36:45

标签: node.js bcrypt

我正在使用使用bcrypt-as-promised的旧项目中的旧代码库(在bcrypt允许使用诺言之前)。当我尝试npm installpackage.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

2 个答案:

答案 0 :(得分:1)

较早版本的bcrypt可能安装起来很棘手,看起来您遇到了npm的经典权限问题。您可以在此处尝试官方文档中列出的一些技巧:https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

...但是与此同时,请尝试以下几件事:

  1. 无论是否安装,都要先尝试全局安装node-gyp sudo:npm install node-gyp -g
  2. 如果可行,请然后尝试安装 bcrypt(再次在全球范围内)。
  3. 如果您仍然遇到权限问题, 您可能需要整理node_modules目录的所有权: sudo chown -r XXX /usr/lib/node_modules/(假设是在这里 当然,全局模块目录位于您的计算机上。

答案 1 :(得分:1)

我发现我的问题的解决方案是使用yarn导入我的所有依赖关系而不是npm,同时也将bcrypt-as-promised换成bcrypt(现在包括许诺,无需更改语法。

  1. 我抛弃了bcrypt-as-promised,并在bcrypt文件中将其替换为package.json

  2. 然后我将require('bcrypt-as-promised')的任何实例更改为require('bcrypt')(使用bcrypt的语法保持不变,只是依赖项导入行需要更改)。

  3. 在不使用yarn的情况下,即使更改了文件夹权限,我仍然遇到权限“ EACCES:权限被拒绝”错误,只有bcrypt失败。我的npm和node版本看起来不错。确保我的Ubuntu盒子已全部更新。

  4. 那是我从一个明智的朋友那里得到的建议,尝试使用yarn来代替依赖项。我运行了yarn import,它会读取package.json文件并创建一个yarn.lock文件。然后,我在自己的ubuntu计算机(yarn)上安装了sudo npm install yarn -g,并运行yarn install,并成功安装了 bcrypt

2019年1月更新-改进的解决方案

如果最初使用npm安装了sudo依赖项,则尝试安装bcrypt时可能会遇到权限问题。我改进的解决方案是:

  • 通过./node_modulessudo rm -r ./node_modules文件夹
  • 全新安装npm软件包(不使用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。要么   您的帐户没有权限。

     

我想有两种选择。

     
      
  1. sudo rm -r ./node_modules并通过npm安装软件包   再次,但不使用sudo。
  2.   
  3. 将mod ./node_module更改为可访问和可执行。我先决定了,然后决定了
  4.   

来源:juicycool92 @ GitHub