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:bcryptbcrypt
(支持现在的原生承诺),但我害怕陷入困境,破坏应用程序。我首先想知道是否有一种方法可以为旧的代码库安装这个包以使其工作
有什么想法吗?感谢您的时间和您的见解
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遇到了一个经典的权限问题。您可以在此处尝试官方文档中列出的一些提示: …但与此同时,这里有一些东西可以尝试:
npm安装节点gyp-g
节点\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