在Mac上使用“nvm use”后Node版本未更新

30

我试图使用nvm将本地node版本从8.9.0更新到8.10.0,但没有反映出来。这是我的操作:

node -v

-> v8.9.0

nvm use 8.10.0

-> 现在使用的是node v8.10.0(npm v5.5.1)

node -v

-> v8.9.0

我不明白为什么它不会改变。请告诉我我做错了什么。


7
你可能已经在多个路径中安装了Node,而nvm只管理其中一个。 which -a node 命令会告诉你什么? - Jonathan Lonowski
它说/usr/local/bin/node, /Users/prabhjotrai/.nvm/versions/node/v8.10.0/bin/node, /usr/local/bin/node - psr
我看到有多条路径,你会建议哪个修复方案? - psr
12
你是否也通过Homebrew安装了Node?如果是的话,执行brew uninstall node将卸载位于/usr/local/bin/node的Node实例,但不会影响由nvm管理的实例。否则,你可以尝试修改你的PATH变量(或在打开终端之前可能更改它的任何shell配置),以使nvm路径具有优先级。 - Jonathan Lonowski
1
nvm 的维护者在这里 - 问题很可能是您的 shell 配置文件中没有正确设置 PATH。最简单的解决方案是将 nvm 源码行移到配置文件的末尾。如果仍然无法解决,请在 Github 存储库上提交问题。 - LJHarb
6个回答

19

关于我在解决此问题时的经验,我添加了一些注释。

首先,我使用Jonathan提供的命令which -a node开始,并获得了与操作者相同的输出。

/usr/local/bin/node
/Users/<my-user>/.nvm/versions/node/v8.10.0/bin/node

接下来是Jonathan的评论:你是否也通过Homebrew安装了Node?我尝试通过brew uninstall node卸载node,但出现了错误,提示无法卸载node,因为有另一个依赖于它的程序yarn
然后我意识到brew已经安装了它自己的版本的node,因为我通过brew安装了yarn,它正在覆盖我想要通过nvm使用的node版本。
卸载brew的yarn+node版本解决了我的问题。我仍然需要yarn,现在必须为nvm管理的每个node版本全局安装yarn
不方便,我同意。但对我来说与维护每个项目的二万个node版本并没有太大区别。
所有这些都是在M1 MacOS上完成的,您的输出可能因系统而异。


8
你可以尝试使用 brew uninstall --ignore-dependencies node - FooBar
5
在我的情况下,我只需要执行 brew uninstall node (然后让 nvm 管理它)。 - Shaun Saker
在我的情况下,执行brew uninstall node导致错误("no such keg..."),因为我安装了特定版本的node,所以我必须执行brew uninstall node@18 - Prusdrum

2
请确保在命令提示符中输入arch时,输出为i386
这可以通过使用Rosetta实现。
以下终端命令序列有效:-
nvm install 8.10.0
nvm install --lts
nvm ls
brew upgrade
arch -arm64 brew install n
n

现在请使用键盘上的上下箭头选择节点版本8.10.0,然后使用command+q退出命令提示符。请不要尝试使用brew uninstall --ignore-dependencies node

0

首先检查您的环境变量。它可能映射到node@8.9.0。 您需要先删除环境变量。


0

如果您也在使用Volta,那么Volta可能会优先。

使用which -a node进行验证。

如果是这种情况,请使用volta pin node@version进行切换。


0
nvm 的引用行移动到你的 .zshrc shell 配置文件的底部。这样可以确保 nvm 的 node 路径优先于 Homebrew 的 node 路径。

-2

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