现象:
终端输入:nvm use 16.15.0
终端输出:Now using node v16.15.0 (npm v8.5.5)
终端输入: node -v
终端输出:23.9.0
显然不对呀,生效了又没有生效。
我怀疑mac自己有自带的node版本
输入 which node 后输出 /opt/homebrew/bin/node 也不是自带的node
那我就问了下deepseek
为什么 nvm
切换版本后仍然显示 Homebrew 的 Node.js?
下面是deepseek的解答
主要解决就是环境变量改了下
export NVM_DIR="$HOME/.nvm"
-s "$NVM_DIR/nvm.sh" \] \&\& \\. "$NVM_DIR/nvm.sh" export PATH="$NVM_DIR/versions/node/$(nvm current)/bin:$PATH"
下面是解释:
* 这是因为 Homebrew 的路径在 `PATH` 环境变量中优先级高于 `nvm` 管理的路径。
* 你可以通过以下命令查看 `PATH` 的内容:
sh:echo $PATH
如果 `/opt/homebrew/bin` 或 `/usr/local/bin` 出现在 `~/.nvm/versions/node` 前面,`node` 命令会优先指向 Homebrew 安装的版本。
*** ** * ** ***
#### 4. **如何解决这个问题?**
##### **方法 1:调整 `PATH` 环境变量**
* 确保 `nvm` 管理的 Node.js 路径优先级高于 Homebrew 的路径。可以在你的 shell 配置文件(如 `~/.zshrc` 或 `~/.bashrc`)中添加以下内容:
sh
:
```
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
export PATH="$NVM_DIR/versions/node/$(nvm current)/bin:$PATH"
```
* 然后重新加载配置文件:
sh
```
source ~/.zshrc # 或 source ~/.bashrc
```
##### **方法 2:卸载 Homebrew 安装的 Node.js**
* 如果你不需要 Homebrew 安装的 Node.js,可以直接卸载它:
sh
```
brew uninstall node
```
* 卸载后,`which node` 应该会指向 `nvm` 管理的 Node.js。
##### **方法 3:屏蔽 Homebrew 的 Node.js**
* 如果你不想卸载 Homebrew 安装的 Node.js,可以通过以下命令屏蔽它:
sh
复制
```
brew unlink node
```
* 这样 Homebrew 的 Node.js 将不会被加载,`nvm` 管理的版本会生效。
##### **方法 4:检查 `nvm` 的默认版本**
* 确保你已经为 `nvm` 设置了默认的 Node.js 版本:
sh
复制
```
nvm alias default