降级后更新npm版本

时间:2019-09-06 22:31:43

标签: node.js npm

我已经安装了最新版本的node.js版本10.16.3,并具有最新版本的npm版本6.9.0

我目前正在学习有关node.js的课程,并且老师建议将其降级到npm 5.5.1版,以使其具有与该课程相同的版本,所以我做到了。

最新版本的node.js不支持现在的5.5.1版本,如果我尝试运行任何npm命令(包括在全球范围内更新版本),则会引发如下所示的相同错误。

我已经尝试了以下方法:

运行npm i -g npm @ latest会引发与以下相同的错误。基本上任何npm命令都会抛出该错误

完全卸载并重新安装node.js,但是npm的版本仍然是5.5.1,而不是最新版本

这是我在运行任何npm命令时收到的错误消息

npm WARN npm npm does not support Node.js v10.16.3
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8.
npm WARN npm You can find the latest version at https://nodejs.org/
WARNING: You are likely using a version of node-tar or npm that is incompatible with this version of Node.js.
Please use either the version of npm that is bundled with Node.js, or a version of npm (> 5.5.1 or < 5.4.0) or node-tar (> 4.0.1) that is compatible with Node.js 9 and above.
npm[5864]: c:\ws\src\node_zlib.cc:551: Assertion `args.Length() == 7 && "init(windowBits, level, memLevel, strategy, writeResult, writeCallback," " dictionary)"' failed.



1: 00007FF7DC7ADD8A v8::internal::GCIdleTimeHandler::GCIdleTimeHandler+4506
 2: 00007FF7DC788886 node::MakeCallback+4534
 3: 00007FF7DC78893F node::MakeCallback+4719
 4: 00007FF7DC6E791D RSA_meth_get_flags+93021
 5: 00007FF7DCCB5BF2 std::vector<v8::internal::compiler::MoveOperands * __ptr64,v8::internal::ZoneAllocator<v8::internal::compiler::MoveOperands * __ptr64> >::_Umove+79442
 6: 00007FF7DCCB707D std::vector<v8::internal::compiler::MoveOperands * __ptr64,v8::internal::ZoneAllocator<v8::internal::compiler::MoveOperands * __ptr64> >::_Umove+84701
 7: 00007FF7DCCB60D6 std::vector<v8::internal::compiler::MoveOperands * __ptr64,v8::internal::ZoneAllocator<v8::internal::compiler::MoveOperands * __ptr64> >::_Umove+80694
 8: 00007FF7DCCB5FBB std::vector<v8::internal::compiler::MoveOperands * __ptr64,v8::internal::ZoneAllocator<v8::internal::compiler::MoveOperands * __ptr64> >::_Umove+80411
 9: 000001F722E5C5C1

2 个答案:

答案 0 :(得分:0)

我强烈建议所有使用node的开发人员使用nvm

我们使用nvm来快速切换我们正在使用的节点版本

使用nvm安装喜欢的节点版本后,可以像这样用npm本身轻松升级npm

npm install -g npm@latest

您可以指定确切的版本号,而不是latest

npm install -g npm@5.5.1

编辑:我只是重新阅读了您的文章,发现您在使用特定版本的节点安装npm的旧版本时特别麻烦

考虑仅使用特定版本的节点使用的npm版本

同时,戳戳并促使您的讲师“使用它”,没有任何借口-使用不支持的软件,尤其是npm,是一个糟糕的主意,因为旧版本中存在安全漏洞,

这是一款可以下载并自动执行成千上万个开源软件包的软件,几乎没有任何安全措施-如果您打算在废弃的虚拟机中这样做,则最好这样做使用该软件的未修补旧版本

再次,您应该对此感到羞耻,并向他们传授留在受支持频道上的重要性,以及如何使用nvm使其像蛋糕一样容易

欢呼

?追逐

答案 1 :(得分:0)

在遵循相同的课程时,我遇到了完全相同的问题。我设法通过卸载节点以及计算机上的所有npm文件并从头开始重新安装节点来修复它。具体来说,我按照此答案成功卸载了node和npm。

How to completely remove node.js from Windows