Node.js 我怎样才能从旧的代码库中安装“bcrypt as associated”到我的ubuntu盒中?

Node.js 我怎样才能从旧的代码库中安装“bcrypt as associated”到我的ubuntu盒中?,node.js,bcrypt,Node.js,Bcrypt,我正在使用一个旧项目中的旧代码库,该项目按照承诺使用bcrypt(在bcrypt允许使用承诺之前)。当我尝试安装npm包.json时,我收到该包的以下错误: npm警告不推荐使用的bcrypt作为-promised@1.1.0:bcrypt模块现在支持承诺,不再需要此模块 npm警告已弃用bcrypt@0.8.7:bcrypt=v2.0.0以改进对较新bcrypt哈希的支持 然后继续失败(如果需要,我可以粘贴更多的错误消息) 我有点困惑,如何才能安装这个现在已弃用的软件包。我曾考虑过修改代码库,

我正在使用一个旧项目中的旧代码库,该项目按照承诺使用
bcrypt
(在
bcrypt
允许使用承诺之前)。当我尝试安装
npm
包.json时,我收到该包的以下错误:

npm警告不推荐使用的bcrypt作为-promised@1.1.0:bcrypt模块现在支持承诺,不再需要此模块

npm警告已弃用bcrypt@0.8.7:bcrypt=v2.0.0以改进对较新bcrypt哈希的支持

然后继续失败(如果需要,我可以粘贴更多的错误消息)

我有点困惑,如何才能安装这个现在已弃用的软件包。我曾考虑过修改代码库,使其只使用
bcrypt
(支持现在的原生承诺),但我害怕陷入困境,破坏应用程序。我首先想知道是否有一种方法可以为旧的代码库安装这个包以使其工作

有什么想法吗?感谢您的时间和您的见解

My package.json:

//编辑:

以下是我尝试安装sudo npm时收到的完整终端消息:

> 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

较旧版本的bcrypt安装起来相当棘手,而且看起来npm遇到了一个经典的权限问题。您可以在此处尝试官方文档中列出的一些提示:

…但与此同时,这里有一些东西可以尝试:

  • 首先尝试全局安装节点gyp,可以有,也可以没有 sudo:
    npm安装节点gyp-g
  • 如果可行,请尝试安装 bcrypt(同样,全球)
  • 如果您仍然看到权限问题, 您可能需要整理
    节点\u模块
    目录的所有权:
    sudo chown-r XXX/usr/lib/node\u modules/
    (假设在那里 全局模块目录当然在您的计算机上)

  • 我发现我的问题的解决方案是使用
    warn
    导入我的所有依赖项,而不是
    npm
    ,同时也将
    bcrypt按承诺的那样替换为
    bcrypt
    (现在包括承诺,无需进行语法更改)

  • 我放弃了承诺的
    bcrypt
    ,在我的
    package.json
    文件中用
    bcrypt
    替换了它

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

  • 在没有使用
    warn
    的情况下,即使更改了文件夹权限,我仍然会出现权限“EACCES:permission denied”错误,只有
    bcrypt
    失败。我的npm和node版本看起来不错。确保我的Ubuntu盒子都更新了

  • 这时,我从一位明智的朋友那里得到建议,尝试使用
    spirn
    来获取依赖项。我运行了
    warn import
    ,它读取
    package.json
    文件并创建一个
    warn.lock
    文件。然后我在我的ubuntu机器上安装了
    warn
    sudo npm install warn-g
    ),运行
    warn install
    ,并成功安装了
    bcrypt

  • 2019年1月更新-改进的解决方案 如果
    npm
    依赖项最初是使用
    sudo
    安装的,则在尝试安装
    bcrypt
    时可能会遇到权限问题。我改进的解决方案是:

    • 通过
      sudo rm-r./node\u模块
    • 全新安装npm软件包(不使用
      sudo
    • 在此之后,我能够
      npmi--save bcrypt
      安装包 成功
    下面是GitHub的一个链接,它帮助我找到了解决方案和摘录:

    @Mayocampo许可被拒绝,mkdir “/home/someroute/node_modules/bcrypt/build”

    似乎您以root用户身份运行rpm,否则您的帐户将无法
    mkdir
    在/home/someroute/node_modules/Check dir下使用
    ls-l
    /home/someroute/node\u modules/
    我确信上层目录的所有者是root。或 您的帐户不能有权限

    我想有两种选择

  • sudo rm-r./node_模块
    并通过npm安装软件包 再一次,但不使用sudo
  • 将mod./node_模块更改为access和excutable。我先决定,然后就解决了

  • 来源:

    这些只是警告,不应该破坏安装-您可以添加更多错误详细信息吗?@Ben感谢您的回复-我确实在那里添加了完整的终端消息。我也尝试过安装
    节点gyp
    ,但仍然收到相同的消息。我还尝试安装了
    节点gyp rebuild
    ,正如我在错误中看到的那样,但再次收到相同的消息。如果您能提供任何见解,我们将不胜感激!:)谢谢你的回复。我确实按照您的建议安装了
    节点gyp
    ,但也有同样的问题。我尝试更改我的
    ~/node\u模块
    和我的
    /var/www/mean\u hike/node\u模块
    文件夹的全局权限。当我尝试运行
    sudo chown-r
    并尝试提供权限时,收到消息说
    -r
    不是有效的标志?我的ubuntu实例上有2个
    node\u modules
    文件夹(在项目文件夹和根用户目录中)。不需要像承诺的那样在全球范围内使用
    bcrypt。我的
    node\u modules
    (项目文件夹)权限应该是什么?我还尝试了:
    sudo chown-R$USERNAME./node\u modules
    (从项目目录中),以及
    sudo chown-R$USERNAME~/node\u modules
    (全局文件夹所在的位置)。就我的情况来说,是$US