为什么Windows无法识别Node版本管理器(NVM)?

104
我试图降级我的 Node 版本。 我运行了:
npm install nvm

我将 bin 文件夹导出到了 Windows 的路径变量中,

C:\Program Files (x86)\nodejs\node_modules\npm\bin

但我仍然遇到以下问题:

'nvm' 不被识别为内部或外部命令。

我应该将另一个路径添加到我的路径变量中吗?


1
使用scoop:https://medium.com/around-the-app-in-365-days/setting-up-a-pc-63409ee7ab33 - XoXo
13个回答

122

nvm是为Linux设计的。完全不同的nvmwnode v0.10.30左右出了问题。请尝试使用适用于Windows的NVM for Windows


如果我们在安装nvmw时卸载了node js,那么之后nodejs会如何工作?请指导。我们需要重新安装nodejs吗? - Always_a_learner
Corey,我已经安装了nvmw并运行了nvm install 9.10来安装Node版本9.10。 现在我有路径C:\ Users \ simer \ AppData \ Roaming \ nvm \ v9.10.0 和 C:\ Users \ simer \ AppData \ Roaming \ nvm \ v9.10.0 \ node_modules \ npmnode和npm的路径都无法工作,并且无法识别为命令。请帮忙。 - Always_a_learner
1
@Simer - 这些应该写成新问题。在这样做之前,请检查 github.com/coreybutler/nvm-windows 上的已关闭问题,因为有几个答案可以回答你的第二个问题。 - Corey
2
顺便提一下,还有一个叫做nodist的工具。我没有尝试过它,但在过去,我曾遇到过与nvm-windows相关的问题,例如需要以管理员身份运行、路径中带有空格、使用其他shell等等。不过,现在我看到Corey正在重新关注这个问题(自动发布等),所以这些问题可能即将成为历史。 - jacobq
供日后参考:NVM for Windows 不支持 .nvmrc 文件,并且开发者明确表示,他也不会接受任何关于此问题的 PR。 - starikcetin
请查看 https://github.com/coreybutler/nvm-windows/issues/190,了解我打算如何使用钩子启用类似 nvmrc 的功能。这将成为“rt”的一部分(NVM4W 的后继版本,详情请见https://github.com/coreybutler/nvm-windows/discussions/565)。 - Corey

107

NVM 可以用来管理不同的 Node.js 版本:

  • 步骤1:下载 Windows 版 NVM

  • 步骤2:选择 nvm-setup.zip

  • 步骤3:解压缩并点击安装程序。

  • 步骤4:检查 NVM 是否正确安装,在新的命令提示符中输入 nvm

  • 步骤5:使用 NVM 安装 Node.js: nvm install <version> :版本可以是 Node.js 的版本或“latest”表示最新稳定版

  • 步骤6:检查 Node.js 版本 - node -v

  • 步骤7(可选):如果您想安装另一个版本的 Node.js,请使用步骤5并指定不同的版本。

  • 步骤8:检查已安装的 Node.js 版本列表 - nvm list

  • 步骤9:如果您想使用特定的 Node.js 版本,请执行 - nvm use <version>


6
重要提示:nvm命令只能在以管理员身份运行的PowerShell/CMD中被识别。 - Akshay Vijay Jain
1
安装了nvm后,node无法被识别。可能出了什么问题? - Nouman Ahsan
3
安装完成后,请使用新打开的命令提示符。 - Ritu Gupta
在 Windows 11 Pro 中,nvm 命令可以在非提升的 cmd/powershell 中识别,并且我们可以安装新版本;但是对于 nvm use <version>,需要以管理员身份提升。 - Marcelo Scofano Diniz

7
作为节点管理器的替代方案,您可以使用来自LinkedIn的Volta

7

NVM在Windows上的安装和使用

以下是在Windows上安装NVM的步骤:

NVM代表node版本管理器,它可以帮助您在多个npm版本中切换node版本。

  • 安装nvm设置。
  • 使用命令nvm list检查已安装的node版本列表。
  • 例如:键入nvm use 6.9.3以切换版本。

有关更多信息


3
该链接已不再可用。 - Felix Scheffer

3

唯一一个在没有管理员权限的情况下对我有效的。希望能看到该库继续得到支持。 - leachim

2
我将列出两种方法。您可以选择其中一种,任何一种都适合您。
1. 使用安装程序 下载nvm-setup.zip并解压缩文件并安装它,保持默认配置。
2. 使用curl 复制下面的命令并在终端中运行。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

在重新打开/打开终端后,请运行以下命令检查正在运行的 nvm 版本。
nvm -v

就是这样了。


1
#1 在2022年的Windows 10 x64上对我有效,其他方法都无效。 - mdkb

2
我们需要做的第一件事是安装 NVM。
  1. 卸载现有的 Node.js 版本,因为我们不再使用它。
  2. 删除任何现有的 Node.js 安装目录。例如:“C:\Program Files\nodejs”)。NVM 生成的符号链接不会覆盖现有(甚至是空的)安装目录。
  3. 删除位于 C:\Users[你的用户名]\AppData\Roaming\npm 的 npm 安装目录。 现在,我们准备安装 NVM。从https://github.com/coreybutler/nvm/releases下载安装程序。

要升级:运行新的安装程序。它将安全地覆盖需要更新的文件,而不会触及您的 Node.js 安装。确保您使用相同的安装和符号链接文件夹。如果您最初安装到默认位置,则只需在每个窗口上单击“下一步”,直到完成即可。

致谢 直接复制自:https://digitaldrummerj.me/windows-running-multiple-versions-of-node/


2

如果有人想在Windows 11上进行安装!虽然不是直接相关的内容,但可能会有用。

如果您已经安装了node(16.15.1),那么安装NVM(版本1.1.9)并不重要。在nvm安装过程中,它会请求管理现有的node版本和符号链接。

从GitHub存储库获取版本,我选择了zip版本。

https://github.com/coreybutler/nvm-windows/releases

双击应用程序,只需要几个步骤即可。


我在Windows 10上尝试了这个,只要我下载了最新版本的正确zip文件,它就可以工作。对于任何人来说,我感到困惑,因为这与主Github软件下载不同(我首先尝试并且只有一个.bat文件)。如果您在zip文件中有除“nvp-setup.exe”以外的任何其他内容,则您可能已经下载了错误的Windows安装程序。这比所有介绍如何做到这一点的文章更容易,这些文章都是在2022年之前发布的,并暗示这是一项大工程。事实并非如此。运行该exe并遵循Vimal的说明即可完成。很容易。 - mdkb

1

1
所以此答案适用于使用git bash或类似cmder的控制台模拟器的Windows用户……如果您正在使用CMD,则此解决方案将不起作用。另外,为什么还在使用CMD?我知道这是一个相当老的帖子,但昨天我刚实现了这一点,并希望为任何想要执行相同操作的人添加我的答案。
  • 首先通过键入ls -alh ~检查您的主目录中是否有.bashrc配置文件 (默认情况下不存在)
  • 如果不存在,请键入以下命令生成一个具有默认值的.bashrc配置文件:cat /etc/bash.bashrc > ~/.bashrc (如果存在,则跳过此步骤)
  • 下载并运行提供在nvm文档页面的安装脚本curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash (确保您在主目录中执行此操作)
  • 然后编辑上面创建的新生成的.bashrc配置文件; 使用nano / vim进行编辑:nano ~/.bashrc,并在文件底部添加以下内容: export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm 然后保存您的.bashrc文件。
  • 最后通过键入source ~/.bashrc来源化您的.bashrc文件
  • 验证安装nvm --version

现在您已经安装了nvm,并且可以按照https://github.com/nvm-sh/nvm#usage中的说明使用命令。


我正在Windows上使用Cmder。不幸的是,上述方法不起作用。我有一个包含导出命令的.bashrc文件。在提示符直接运行source ~/.bashrc会导致错误“source不是已知命令…”。我尝试将此命令添加到cmder config/profile.d目录中的.sh文件中,但没有任何效果。还尝试将导出命令添加到相同目录中的.sh文件中-同样无效。运行nvm -v会显示“nvm不是已知命令…”。有任何想法吗?我可以在bash中使用nvm,但我讨厌使用bash。 - danwellman
1
@danwellman 这很奇怪,因为 source 是一个内置的 shell 命令,cmder 应该能够识别它!无论如何,如果这不起作用,您可以简单地关闭终端并重新打开;如果 nvm 仍然无法工作,我建议检查 .bashrc 文件是否实际上包含指向 nvm 安装路径的路径。 - Neenus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接