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 <version>

    例如:

    sh

    复制

    复制代码
    nvm alias default 18.0.0

5. 验证是否解决

  • 运行以下命令检查当前使用的 Node.js 版本和路径:

    sh

    复制

    复制代码
    node -v
    which node
  • 如果输出显示的是 nvm 管理的版本(例如 ~/.nvm/versions/node/v18.0.0/bin/node),说明问题已解决。

相关推荐
readhere8 小时前
从ZYNQ7000开发板,学会启动嵌入式Linux系统——入门学习:EBAZ4205篇目录
linux·启动·嵌入式linux·zynq7000·ebaz4205
打工仔折腾 AI10 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
‎ദ്ദിᵔ.˛.ᵔ₎10 小时前
关于Linux 线程局部存储的认识
linux·运维
小小de风呀12 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
晚风吹北巷14 小时前
Linux复习篇(自用)
linux·运维·服务器·1024程序员节
by2099914 小时前
Linux 压缩传输、进程查看与权限管理
linux·经验分享·1024程序员节
无足鸟ICT15 小时前
【RHCA+】reboot命令(重启)
linux·运维·服务器·1024程序员节
DYWorker00116 小时前
第1课:基于正点原子RK3568开发板读懂Linux内核
linux·运维·网络
Android系统攻城狮16 小时前
Linux FFmpeg深度解析之avformat_open_input调用流程与实战(一)
linux·运维·ffmpeg·车载音视频·ffmpeg音视频·音视频进阶手册