nvm踩坑记录--nvm 切换node版本 node -v却不是切换的版本

现象:

终端输入: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 ``` 例如: sh 复制 ``` nvm alias default 18.0.0 ``` *** ** * ** *** #### 5. **验证是否解决** * 运行以下命令检查当前使用的 Node.js 版本和路径: sh 复制 ``` node -v which node ``` * 如果输出显示的是 `nvm` 管理的版本(例如 `~/.nvm/versions/node/v18.0.0/bin/node`),说明问题已解决。

相关推荐
IT成长日记39 分钟前
05【Linux经典命令】Linux 用户管理全面指南:从基础到高级操作
linux·运维·服务器·用户管理·命令
Sapphire~7 小时前
Linux-07 ubuntu 的 chrome 启动不了
linux·chrome·ubuntu
伤不起bb7 小时前
NoSQL 之 Redis 配置与优化
linux·运维·数据库·redis·nosql
广东数字化转型7 小时前
nginx怎么使用nginx-rtmp-module模块实现直播间功能
linux·运维·nginx
啵啵学习7 小时前
Linux 里 su 和 sudo 命令这两个有什么不一样?
linux·运维·服务器·单片机·ubuntu·centos·嵌入式
半桔8 小时前
【Linux手册】冯诺依曼体系结构
linux·缓存·职场和发展·系统架构
网硕互联的小客服8 小时前
如何利用Elastic Stack(ELK)进行安全日志分析
linux·服务器·网络·安全
冰橙子id9 小时前
linux——磁盘和文件系统管理
linux·运维·服务器
无聊的小坏坏10 小时前
环境变量深度解析:从配置到内核的全链路指南
linux·bash
才鲸嵌入式10 小时前
01 Ubuntu20.04下编译QEMU8.2.4,交叉编译32位ARM程序,运行ARM程序的方法
linux·c语言·单片机·嵌入式·arm·qemu·虚拟机