无法在 node.js 上安装任何加密包

Posted

技术标签:

【中文标题】无法在 node.js 上安装任何加密包【英文标题】:Can't install any encryption packages on node.js 【发布时间】:2019-01-06 17:18:23 【问题描述】:

我在 Windows 10 上通过 Vagrant+Virtualbox 运行 Ubuntu 14.04.5。 npm 运行良好,我在安装任何模块时都没有遇到任何问题。 几天前,我尝试安装 bcrypt,但过程失败。我尝试了所有可以在 *** 线程上找到的解决方案,唯一有效的是使用 yarn 安装。 我不会进入它,但我更喜欢通过 npm 安装 bcrypt。 然后我尝试安装 bcryptjs、crypto-js 和 jsonwebtoken,都失败了! 因此,由于某种原因,所有与密码学相关的模块在通过 npm 安装时都会失败...... 我尝试将 node 和 npm 更新到最新版本,但我无法安装任何东西。 回到 npm v 5.7.1 让我回到了以前的状态:我可以安装除加密相关模块之外的所有东西。

我在尝试安装 bcrypt 时遇到的错误:

688 verbose stack Error: ENOENT: no such file or directory, open '/vagrant    /node/test8/node_modules/bcrypt/node_modules/minipass/node_modules/yallist/package.json.1450451485'
694 error path /vagrant/node/test8/node_modules/bcrypt/node_modules/minipass/node_modules/yallist/package.json.1450451485
695 error code ENOENT
696 error errno -2
697 error syscall open
698 error enoent ENOENT: no such file or directory, open '/vagrant/node/test8/node_modules/bcrypt/node_modules/minipass/node_modules/yallist/package.json.1450451485'
699 error enoent This is related to npm not being able to find a file.

我在尝试安装 bcryptjs 时遇到的错误:

354 warn rollback Rolling back bcryptjs@2.4.3 failed (this is probably harmless): ETXTBSY: text file is busy, unlink '/vagrant/node/test8/node_modules/bcryptjs/package.json.3007922196'
360 verbose stack Error: ETXTBSY: text file is busy, rename '/vagrant/node/test8/node_modules/bcryptjs/package.json.3007922196' -> '/vagrant/node/test8/node_modules/bcryptjs/package.json'
366 error path /vagrant/node/test8/node_modules/bcryptjs/package.json.3007922196
367 error code ETXTBSY
368 error errno -26
369 error syscall rename
370 error ETXTBSY: text file is busy, rename '/vagrant/node/test8/node_modules/bcryptjs/package.json.3007922196' -> '/vagrant/node/test8/node_modules/bcryptjs/package.json'

我在尝试安装 crypto-js 时遇到的错误:

359 verbose stack Error: ETXTBSY: text file is busy, rename '/vagrant/node/test8/node_modules/crypto-js/package.json.3321474119' -> '/vagrant/node/test8/node_modules/crypto-js/package.json'
365 error path /vagrant/node/test8/node_modules/crypto-js/package.json.3321474119
366 error code ETXTBSY
367 error errno -26
368 error syscall rename
369 error ETXTBSY: text file is busy, rename '/vagrant/node/test8/node_modules/crypto-js/package.json.3321474119' -> '/vagrant/node/test8/node_modules/crypto-js/package.json'

我在尝试安装 jsonwebtoken 时遇到的错误:

597 verbose stack Error: ETXTBSY: text file is busy, rename '/vagrant/node/test8/node_modules/jwa/package.json.1518470635' -> '/vagrant/node/test8/node_modules/jwa/package.json'
603 error path /vagrant/node/test8/node_modules/jwa/package.json.1518470635
604 error code ETXTBSY
605 error errno -26
606 error syscall rename
607 error ETXTBSY: text file is busy, rename '/vagrant/node/test8/node_modules/jwa/package.json.1518470635' -> '/vagrant/node/test8/node_modules/jwa/package.json'

知道是什么导致了这一切吗?

【问题讨论】:

【参考方案1】:

在某些情况下 NPM 找不到文件。请尝试以下方法并告诉我:

    运行命令vagrant halt 停止流浪者 删除node_modules 文件夹。 将 NPM 和 Node 更新到最新版本 运行npm cache clean --force 现在尝试安装 一旦一切都完成了,你可以通过运行vagrant up来启动vagrant,如果你想要SSH,然后在启动后运行这个命令,vagrant ssh

更多类似问题相关信息可以查看here

可能对你有用,https://***.com/a/47091934/2520628

另外,有些模块需要不同版本的 NPM,see here

所以我猜你可能正在尝试安装不兼容的版本

【讨论】:

感谢 Tejashwi 的快速回复。我将 node 更新为 v 10.1.0,将 npm 更新为 v 6.2。无法再次安装任何东西!恢复到 npm 5.7.1,现在我可以安装除 bcrypt 之外的所有模块。没有它我猜,bcryptjs 就足够了。

以上是关于无法在 node.js 上安装任何加密包的主要内容,如果未能解决你的问题,请参考以下文章

无法从终端调用Node js npm安装的全局包,尝试了一切

node.js怎么安装node modules

node.js下使用RSA加密事例(windows)

无法在 Windows 10 上安装 NPM 依赖项

Node.js中引入md5加密

mysql 和 node.js 上的 AES 加密