Nvm-windows: 为什么不能通过“nvm use”切换节点版本

创建于 2017-12-11  ·  43评论  ·  资料来源: coreybutler/nvm-windows

如果这是关于如何使用 NVM4W 的问题,请改用stackoverflow

如果这是与防病毒有关的问题,请确保首先搜索现有问题。

我的环境

  • [x] Windows 7 或更低版本(由于 EOL 不真正支持 - 请参阅 wiki 了解详细信息)

我正在使用 NVM4W 版本:

  • [x] 1.1.6

我已经...

  • [x] 阅读自述文件以了解 npm 陷阱和防病毒问题。
  • [x] 查看了wiki以确保我的问题尚未解决。
  • [ ] 已验证我正在使用具有管理权限的帐户。
  • [ ] 搜索了问题(打开和关闭)以确保这不是重复的。
  • [ ] 确保这不是关于如何在 Windows 上使用 NVM 的问题,因为gitter用于问题和评论。

我的问题与(仅检查适用的那些)有关:

  • [ ] 设置.txt
  • [ ] 代理支持(您是否尝试过 1.1.0+ 版?)
  • [ ] 32 位或 64 位支持(您是否尝试过 1.1.3+ 版?)
  • [ ] 字符转义(您是否尝试过 1.1.6+ 版本?)
  • [ ] 标准 shell 环境(终端/powershell)
  • [ ] 一个非标准的 shell 环境(Cmder、Hyper、Cygwin、git)

预期行为

我尝试将 v8.9.1 切换到 6.12.0(节点版本)

实际行为

但是,它没有切换到 6.12.0 或其他版本。
(我最后安装了 8.9.1)

重现问题的步骤:

我通过管理员打开了cmd。

C:Windowssystem32>nvm ls

  • 8.9.1(当前使用 64 位可执行文件)
    7.1.0
    6.12.0

C:Windowssystem32>node -v
v8.9.1

C:Windowssystem32>nvm 使用 6.12.0
现在使用节点 v6.12.0(64 位)

C:Windowssystem32>node -v
v8.9.1

C:Windowssystem32>nvm ls

  • 8.9.1(当前使用 64 位可执行文件)
    7.1.0
    6.12.0

最有用的评论

解决方法:
将“C:Program Filesnodejs”重命名为“C:Program Filesnodejsx”,
然后从一个名为“nvm use 8.9.1”的提升的cmd(你得到的任何版本都应该工作..)并开始工作。
问题似乎是,如果 nodejs 目录存在,nvm 无法将其更改为符号链接,并且“静默失败”会很好,失败和错误消息说明问题。

所有43条评论

相同

+1

与 nvm 1.1.5 相同:

C:\windows\system32>nvm version
1.1.5

C:\windows\system32>nvm ls

    8.9.2
  * 4.7.2 (Currently using 64-bit executable)

C:\windows\system32>nvm use 8.9.2
Now using node v8.9.2 (64-bit)

C:\windows\system32>node -v
v4.7.2

C:\windows\system32>

@biologeek同样的事情:/
你找到解决办法了吗?

这种情况最常发生是由于使用了非特权用户帐户。 您的帐户必须具有管理员级别的权限,因为 Windows 需要它作为符号链接。 nvm use创建一个指向相应节点安装的符号链接。 如果您的符号链接存在于C:\Program Files ,您将需要提升权限(nvm4w 将尝试自动为您执行此操作)。

我是我电脑的管理员。 虽然我可以通过手动重命名文件夹来解决这个问题,以便 nvm 符号链接指向我需要的版本。
快速而肮脏,但无需管理员访问!

@biologeek - 您仍然需要管理员访问权限才能重命名C:\Program Files内的目录,因为它是 Windows 上的受保护目录(对于C:\windows\system32也是如此)。 就个人而言,我将 NVM4W 符号链接保留在我的用户目录中,因此这不是问题。

在此问题上 +1:我无法更改版本。

解决方法:
将“C:Program Filesnodejs”重命名为“C:Program Filesnodejsx”,
然后从一个名为“nvm use 8.9.1”的提升的cmd(你得到的任何版本都应该工作..)并开始工作。
问题似乎是,如果 nodejs 目录存在,nvm 无法将其更改为符号链接,并且“静默失败”会很好,失败和错误消息说明问题。

可以确认@ituasdu所说的。 谢谢!

@ituasdu解决了我的问题,谢谢

你好,这里有同样的问题。

NVM 创建一个指向已安装节点版本的符号链接。

问题是 Windows 7 需要管理员权限级别来创建符号链接,而在 Windows 10 中不再是这种情况。

一种解决方法是在 Windows 7 上使用带有参数“/J”的联结(“硬”链接)。 Junctions 不需要管理员权限级别和低权限用户帐户,因为我可以使用它。 例子:

nvm install 8.11.2
mklink /D /J node C:\PATH_TO_NVM\nvm\v8.11.2

问题:使用连接代替符号链接不是一个好主意吗? 或者至少为 nvm 指定一个选项,例如 '--junctions' ?

我正在考虑为此创建一个拉取请求,因为它阻碍了我的公司。 会有帮助吗?

@nan0在 Windows 7 上进行连接不起作用......它仍然不会切换版本。

C:\Program Files\nodejs包含 v6.9.4(在安装 NVM4W 之前安装)。

C:\Users\[user]\AppData\Roaming\nvm包含v6.9.4\v8.11.3\

我运行了您在帖子中提供的命令:

问题 1:
mklink /D /J node C:\Users\[user]\AppData\Roaming\nvm\v8.11.3当我尝试为 v6.9.4 执行此操作时,它说“当该文件已存在时无法创建文件”。

问题 2:
此外,使用nvm use v8.11.3然后nvm list并不表示它实际上使用的是 nvm 安装的节点版本。

还有什么可以做的吗?
如何查看创建的连接点? 它们实际存在于何处?

我正在使用:
Windows 7. 我的用户没有管理员权限。

没关系它确实有效。 我意识到我在错误的文件夹中制作了junction

将 C:Program Filesnodejs 重命名为 C:Program Files nodejsx
然后将连接点设为“nodejs”并将其指向C:\Users\[user]\AppData\Roaming\nvm\v8.11.3工作!

所以总结一下解决方案是这样的:

没有安装独立节点。

C:\Program Files\文件夹中使用cmd运行mklink /D /J nodejs C:\Users\[user]\AppData\Roaming\nvm\v8.11.3

有兴趣投稿的朋友,谢谢!

然而; 我想指出的是,明确避免了连接,因为它们不能跨不同的硬盘驱动器工作。 这是具有共享驱动器/映射驱动器的企业网络中的一个特殊痛点。

@ituasdu它解决了我的问题,
感谢您的解决方案。

我的电脑是 Windows 7,我有管理员权限。 同样的情况,NVM不能改版本。我的做法是在环境变量中设置NVM_SYMLINK D:Project NVM v8.11.4。切换节点版本只需要修改环境变量NVM路径对应的版本号,如:NVM_SYMLINK D:Project NVM v6.9.0。这样虽然问题解决了,但是每次换版本都麻烦,暂时没找到更好的解决办法。

堆栈溢出的“Sagan”解决方案对我有用:
https://stackoverflow.com/questions/28313372/nvm-for-windows-not-working

给我,

nvm list 

image

然后我从nvm 中删除了
image

在那之后:

nvm list 

image

然后,我将v8.9.4 移回原处。

这在 Windows 10 10.0.17134.165 上发生在我身上
我尝试了@ituasdu提到的解决方案,它奏效了。 谢谢!!!

如果您在尝试 cmd 后发现:
nvm use 6.10.0
并且nodejs版本没有变化,管理员可以启动cmd.exe或者powershell。
image

在节点 6.6.0 和 7.9.0(Windows 10)之间切换时我遇到了同样的问题,但 ituasdu 的解决方案不起作用。 重新安装 nvm 也没有用。

我运行了 nvm install latest(安装了 11.3.0),这以某种方式为我修复了它。

解决方法:
将“C:Program Filesnodejs”重命名为“C:Program Filesnodejsx”,
然后从一个名为“nvm use 8.9.1”的提升的cmd(你得到的任何版本都应该工作..)并开始工作。
问题似乎是,如果 nodejs 目录存在,nvm 无法将其更改为符号链接,并且“静默失败”会很好,失败和错误消息说明问题。

这对我有用。
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

@ituasdu也为我工作..谢谢.. :)

@ituasdu谢谢,工作

这也适用于我,谢谢。

我不知道这是否可以解决这个问题,但在我的情况下,我认为这是在安装了没有 nvm 的新版本节点(手动)之后发生的。 似乎这个动作让 nvm 变得疯狂。

@coreybutler对在不需要管理员权限的文件夹上安装符号链接有什么想法吗? 我知道这在 Windows 开发中可能有点糟糕,但它肯定会回避所有这些问题,尤其是在高度锁定的企业环境中,获取管理员权限是一个巨大的痛苦。

其他痛苦是我目前正在遭受的(不是因为 nvmw),尽管在某些情况下我确实有管理员权限,但每次我想在节点版本之间切换时,我都必须打开一个完整的其他 cmd 窗口,以管理员身份运行 cmd,最后运行nvm use 10.15.1 (例如)。 然后导航回到我的开发,cmd 窗口。 啊。 再说一次,工作环境带来的痛苦而不是 nvmw。 (顺便说一句,nvmw 很棒)。

只是一个想法。 ;-)

以管理员身份在 Powershell ISE 下运行nvm use <node.js version you want to use> (例如nvm use 10.15.3 )解决了我的 Windows 10 中的问题。

我必须在Powershell 以管理员身份多次运行nvm use any.version才能使其工作。 它在第一次、第二次或第三次尝试时随机更改版本(nvm 版本 1.1.7)。

我尝试通过安装Link Shell Extension并执行以下步骤来修复它:

  1. 右键单击C:\Program Files\nodejs
  2. 选择_选择链接源_
  3. 右键单击C:\Program Files
  4. 选择 _Drop as..._ > _Symbolic Link_
  5. nodejs - SymbolicLink重命名nodejsx

但不幸的是,问题仍在发生。

可以确认@ituasdu解决方案也对我

@ituasdu对我

@monico-moreno - 下次当我几个月都没有回复时通过电子邮件 ping 我 :) 要回答您的问题,您可以使用安装程序安装到您想要的任何文件夹。 然而; Windows 上的所有符号链接都需要管理员权限,但较新版本的 Windows 10 上的某些开发人员模式除外。底线是管理员权限在某些时候发挥作用。

另外,也许您可​​以在我结束菜单系统时对其进行 Beta 测试(从 Windows 任务栏切换版本)。 那会是一个更好的工作流程吗?

  • 打开控制面板并卸载 nvm 和 node。
  • https://github.com/coreybutler/nvm-windows/releases安装 nvm-setup.zip
  • 打开命令提示符。 输入 nvm install @version。 然后nvm使用版本。
  • 安装纱线。 然后在命令提示符下运行 yarn install 或 yarn。
  • 通过 node -v 检查节点版本。

我只是有类似的问题,但不同的原因。

D:\> node -v
v12.14.0
D:\> nvm use 8.9.4
Now using node v8.9.4 (64-bit)
D:\> node -v
v12.14.0

// problem
D:\> where node
D:\soft\nodejs\node.exe // <- old nvm used this one
C:\Program Files\nodejs\node.exe // <- new nvm was changing this one

IIRC 我将以前的 nvm 版本安装到 D:soft 并且它正在更改链接 D:softnodejs。 在某些时候旧的 nvm 停止工作,因为 npm 存储库更改了位置(如果它有效 - 请不要触摸)。 我不得不安装新的 nvm,我猜新的 nvm 拒绝更改旧链接,而是更新链接 C:Program Filesnodejs。 所以我删除了 D:softnodejs 并修复了它。

感谢@delepster建议卸载旧节点,这帮助我发现了问题

我们今天安装了三台计算机,其中两台安装了 Windows 10 操作系统,一台安装了 Windows 服务器。 两台装有 Windows 10 操作系统的机器在启动功能时都丢失了搜索功能,但装有 Windows Server 操作系统的机器没有。 因此,您无法再输入想要查看的程序名称。

还有其他人有同样的问题吗?

@putko这是今天出现的 Windows 问题,已由 MS 确认并修复。 看到这条推文https://twitter.com/tomwarren/status/1225110095010418689

解决方法:
将“C:Program Filesnodejs”重命名为“C:Program Filesnodejsx”,
然后从一个名为“nvm use 8.9.1”的提升的cmd(你得到的任何版本都应该工作..)并开始工作。
问题似乎是,如果 nodejs 目录存在,nvm 无法将其更改为符号链接,并且“静默失败”会很好,失败和错误消息说明问题。

这对我有用。
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

这对我也有用。

1.1.7有类似的问题,最后发现settings.txt文件被忽略了。 nvm use绝对不会做任何事情,直到我手动设置NVM_SYMLINK 。 此外,如果没有设置 SYMLINK,nvm 将尝试删除. ,这至少可以说很有趣。

path参数在settings.txt ,其中包含了什么应该被默认为的SymLink使用,是从来没有读过或者用来初始化:
https://github.com/coreybutler/nvm-windows/blob/88353cfcea140e02e2b13584fd89454adc9f52b3/src/nvm.go#L727 -L751

最新版本的 Windows 10 专业版在我进行了全新安装时遇到了同样的问题。

我设置机器的通常步骤是:

  1. 安装主要依赖项(NodeJS 和 Docker)
  2. 安装 IDE(此时 Visual Studio 2019 带有 .NET、NodeJS 和 Python 开发部门)
  3. 安装其他依赖项,如 Windows 终端、PL 字体、nvm、tmux、WSL2 等...

@ituasdu在他的断言中是正确的,当我重命名我的 nodejs 文件时,它允许我使用 nvm use 并实际设置它。 否则它会错误地成功并告诉我版本集等等,但它没有设置版本并且我坚持使用最初安装的 LTS。

我知道实际上有一行说我们应该卸载我第一次在 README.md 上错过的现有节点,但是在我没有再次检查之前使用过 nvm-windows 我只是通过 Chocolatey 安装它并忘记了这一点. (是否可以将 npm 卸载作为巧克力安装的一部分,或者只是检测是否有一个并提示用户在允许他们安装 nvm 之前先卸载它?)

(是否可以将 npm 卸载作为巧克力安装的一部分,或者只是检测是否有一个并提示用户在允许他们安装 nvm 之前先卸载它?)

我认为这是可能的:这个请求应该向Chocolatey nvm 包维护者提出。

当你在你的机器上单独安装了 Node(从网站或包管理器)时,就会发生这种情况。 卸载它们并通过 nvm 安装应该可以解决问题。

我遇到了同样的问题,在管理员模式下使用 PS 并不能解决问题。 (Windows 10.0.18363)

image

此页面是否有帮助?
0 / 5 - 0 等级