如何将旧代码库中的 `bcrypt-as-promised` 安装到我的 ubuntu 盒子上?
How can I install `bcrypt-as-promised` from an old code base onto my ubuntu box?
我正在使用来自使用 bcrypt-as-promised
的旧项目的旧代码库(在 bcrypt
允许使用承诺之前)。当我尝试 npm install
package.json
时,我收到该包的错误消息:
npm WARN deprecated bcrypt-as-promised@1.1.0: the bcrypt module supports promises now, this module is no longer necessary
npm WARN deprecated bcrypt@0.8.7: bcrypt < v2.0.0 is susceptible to bcrypt wrap-around bug. Upgrade to bcrypt >= v2.0.0 for improved support for newer bcrypt hashes
然后继续失败(如果需要,我可以粘贴更多错误消息)。
对于如何安装这个现已弃用的软件包,我有点困惑。我考虑过修改代码库以仅使用 bcrypt
(支持现在的原生承诺),但我害怕潜入蜂巢并破坏应用程序。我首先想知道是否有办法为旧代码库安装此软件包以使其正常工作。
有什么想法吗?感谢您的宝贵时间以及您可能有的任何见解。
我的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
旧版本的 bcrypt 安装起来可能非常棘手,看起来您遇到了 npm 的经典权限问题。您可以在此处尝试官方文档中列出的一些技巧:https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
… 但与此同时,这里有一些尝试:
- 首先尝试全局安装 node-gyp,有或没有
须藤:
npm install node-gyp -g
- 如果可行,然后尝试安装
bcrypt(再次,全局)。
- 如果您仍然遇到权限问题,
您可能需要确定
node_modules
目录的所有权:
sudo chown -r XXX /usr/lib/node_modules/
(假设那是
全局模块目录当然在你的机器上)。
我发现我的问题的解决方案是使用 yarn
导入我所有的依赖项而不是 npm
,同时将 bcrypt-as-promised
换成 bcrypt
(这现在包括无需语法更改的承诺。
我在 package.json
文件中放弃了 bcrypt-as-promised
并将其替换为 bcrypt
。
然后我将 require('bcrypt-as-promised')
的任何实例更改为 require('bcrypt')
(使用 bcrypt
的语法保持不变,只是依赖项导入行需要更改) .
没有使用 yarn
,即使在更改我的文件夹权限后,我仍然遇到权限 "EACCES: permission denied" 错误,只有 bcrypt
失败。我的 npm 和 node 版本看起来不错。确保我的 Ubuntu 框已全部更新。
那时我从一位聪明的朋友那里得到建议,尝试使用 yarn
来获取依赖项。我 运行 yarn import
读取 package.json
文件并创建一个 yarn.lock
文件。然后我在我的ubuntu机器(sudo npm install yarn -g
)上安装了yarn
,运行yarn install
,bcrypt
安装成功!
2019 年 1 月更新 - 改进的解决方案
看起来如果 npm
依赖项最初是使用 sudo
安装的,则在尝试安装 bcrypt
时可能会遇到权限问题。我改进的解决方案是:
- 通过
sudo rm -r ./node_modules
核对 ./node_modules
文件夹
- 全新安装 npm 包(不使用
sudo
)。
- 在此之后,我可以
npm i --save bcrypt
安装软件包
成功。
这是来自 GitHub 的 link,它帮助我找到了解决方案和摘录:
@Mayocampo permission denied, mkdir
'/home/someroute/node_modules/bcrypt/build'
It seems you run rpm as root, therrfore your account cannot mkdir
under /home/someroute/node_modules/ Check dir with ls -l
/home/someroute/node_modules/
Im sure owner of upper dir is root. or
your account cannot have permission.
I guess there are two options are available.
sudo rm -r ./node_modules
And install package via npm
again, but without using sudo.
- Change mod ./node_module to access and excutable. I decided first, and its fixed
我正在使用来自使用 bcrypt-as-promised
的旧项目的旧代码库(在 bcrypt
允许使用承诺之前)。当我尝试 npm install
package.json
时,我收到该包的错误消息:
npm WARN deprecated bcrypt-as-promised@1.1.0: the bcrypt module supports promises now, this module is no longer necessary
npm WARN deprecated bcrypt@0.8.7: bcrypt < v2.0.0 is susceptible to bcrypt wrap-around bug. Upgrade to bcrypt >= v2.0.0 for improved support for newer bcrypt hashes
然后继续失败(如果需要,我可以粘贴更多错误消息)。
对于如何安装这个现已弃用的软件包,我有点困惑。我考虑过修改代码库以仅使用 bcrypt
(支持现在的原生承诺),但我害怕潜入蜂巢并破坏应用程序。我首先想知道是否有办法为旧代码库安装此软件包以使其正常工作。
有什么想法吗?感谢您的宝贵时间以及您可能有的任何见解。
我的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
旧版本的 bcrypt 安装起来可能非常棘手,看起来您遇到了 npm 的经典权限问题。您可以在此处尝试官方文档中列出的一些技巧:https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
… 但与此同时,这里有一些尝试:
- 首先尝试全局安装 node-gyp,有或没有
须藤:
npm install node-gyp -g
- 如果可行,然后尝试安装 bcrypt(再次,全局)。
- 如果您仍然遇到权限问题,
您可能需要确定
node_modules
目录的所有权:sudo chown -r XXX /usr/lib/node_modules/
(假设那是 全局模块目录当然在你的机器上)。
我发现我的问题的解决方案是使用 yarn
导入我所有的依赖项而不是 npm
,同时将 bcrypt-as-promised
换成 bcrypt
(这现在包括无需语法更改的承诺。
我在
package.json
文件中放弃了bcrypt-as-promised
并将其替换为bcrypt
。然后我将
require('bcrypt-as-promised')
的任何实例更改为require('bcrypt')
(使用bcrypt
的语法保持不变,只是依赖项导入行需要更改) .没有使用
yarn
,即使在更改我的文件夹权限后,我仍然遇到权限 "EACCES: permission denied" 错误,只有bcrypt
失败。我的 npm 和 node 版本看起来不错。确保我的 Ubuntu 框已全部更新。那时我从一位聪明的朋友那里得到建议,尝试使用
yarn
来获取依赖项。我 运行yarn import
读取package.json
文件并创建一个yarn.lock
文件。然后我在我的ubuntu机器(sudo npm install yarn -g
)上安装了yarn
,运行yarn install
,bcrypt
安装成功!
2019 年 1 月更新 - 改进的解决方案
看起来如果 npm
依赖项最初是使用 sudo
安装的,则在尝试安装 bcrypt
时可能会遇到权限问题。我改进的解决方案是:
- 通过
sudo rm -r ./node_modules
核对 - 全新安装 npm 包(不使用
sudo
)。 - 在此之后,我可以
npm i --save bcrypt
安装软件包 成功。
./node_modules
文件夹
这是来自 GitHub 的 link,它帮助我找到了解决方案和摘录:
@Mayocampo permission denied, mkdir '/home/someroute/node_modules/bcrypt/build'
It seems you run rpm as root, therrfore your account cannot
mkdir
under /home/someroute/node_modules/ Check dir withls -l /home/someroute/node_modules/
Im sure owner of upper dir is root. or your account cannot have permission.I guess there are two options are available.
sudo rm -r ./node_modules
And install package via npm again, but without using sudo.- Change mod ./node_module to access and excutable. I decided first, and its fixed