【问题标题】:Updating npm version after downgrading降级后更新 npm 版本
【发布时间】:2020-10-13 23:59:43
【问题描述】:

我已经安装了最新版本的 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

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    我在学习相同课程时遇到了完全相同的问题。我设法通过卸载节点以及机器上的所有 npm 文件来修复它,然后从头开始重新安装节点。具体来说,我按照这个答案设法卸载了 node 和 npm。

    How to completely remove node.js from Windows

    【讨论】:

      【解决方案2】:

      我强烈推荐所有使用node的开发者,使用nvm

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

      在你使用 nvm 安装你喜欢的 node 版本后,你可以使用 npm 本身轻松升级 npm,就像这样

      npm install -g npm@latest
      

      除了latest,您可以指定一个确切的版本号,就像这样

      npm install -g npm@5.5.1
      

      编辑:我刚刚重新阅读了您的帖子,发现您在使用特定版本的节点安装旧版本的 npm 时遇到了麻烦

      考虑只使用特定版本节点使用的任何 npm 版本

      另外,戳戳并鼓励你的导师“接受它”,没有任何借口 - 使用不受支持的软件,尤其是 npm,是一个可怕的想法,因为旧版本中存在巨大的安全漏洞

      这是一种可以下载并自动执行 数以千计 个开源软件包的软件,几乎没有任何安全措施——如果您打算这样做,最好在一次性虚拟机中执行此操作正在使用该软件未打补丁的旧版本

      再一次,您应该为此感到羞耻,并教育他们了解留在受支持频道上的重要性,以及如何使用nvm 使其变得轻松

      干杯

      ?追逐

      【讨论】:

      • 非常感谢您的回复。使用 nvm 已经解决了这个问题。所采取的步骤概述如下: 1. 从 github 存储库下载 nvm-install zip 文件 2. 运行 .exe 文件以安装 nvm 3. 使用 nvm 将您的 node 版本恢复为支持 npm 5.5.1 版本的版本例如节点 4 的 8.12.0 版本。一旦恢复运行 npm i -g npm@latest 命令非常感谢您的帮助!
      猜你喜欢
      • 2023-02-23
      • 2014-06-11
      • 2018-03-07
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多