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

news/2025/3/17 15:39:44

现象:

终端输入: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),说明问题已解决。


http://www.niftyadmin.cn/n/5890632.html

相关文章

lua写网页(OpenResty)

故事背景&#xff0c;公司有一个项目居然是用lua写的网页&#xff0c;我是真第一次遇到用lua写网页的&#xff0c;以前遇到的都是php. 一般呢&#xff0c;我也没看这个lua写的网页的代码&#xff0c;但是现在要求另外一个项目也要这个&#xff0c;于是研究了下&#xff0c;发现…

N-Triples, Turtle, RDF/XML 都是什么?还有其他类似的么?

N-Triples、Turtle 和 RDF/XML 是三种用于表示和存储RDF&#xff08;Resource Description Framework&#xff09;数据的序列化格式。它们各自具有不同的特点和适用场景。 N-Triples N-Triples 是一种基于行的纯文本格式&#xff0c;用于表示RDF图。它将RDF三元组&#xff08;…

MySQL事务及索引复习笔记

本文参考小林coding&#xff0c;地址事务隔离级别是怎么实现的&#xff1f; | 小林coding 事务 一、事务是什么&#xff1f; 比如一个程序是转账&#xff0c;你要扣减a的余额&#xff0c;增加b的余额&#xff0c;但是如果程序执行扣减成功然后挂了&#xff0c;就会出现a的余额…

JVM内存结构笔记03-方法区

文章目录 方法区1.定义2.组成方法区与永久代和元空间的关系为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢? 3.方法区常用参数4.运行时常量池常量池运行时常量池定义查看class文件 方法区 1.定义 方法区属于是 JVM 运行时数据区域的一块逻辑区域&#xff0c;是各个…

DeepSeek推荐:Android线程使用与注意事项总结

在 Android 开发中&#xff0c;线程&#xff08;Thread&#xff09;的正确使用对应用的性能和稳定性至关重要。以下是 Thread 的使用技巧与注意事项&#xff0c;结合 Android 系统的特性进行总结&#xff1a; 一、使用技巧 主线程&#xff08;UI 线程&#xff09;与子线程分工…

qt5中使用中文报错error: C2001: 常量中有换行符

1.qt5中使用中文报错error: C2001: 常量中有换行符 如这条代码: this->ui->pbtn_open_card->setText("关闭卡");运行时报错&#xff0c;提示常量中有换行符 2.工具->选项->文本编辑&#xff0c;选择下图 3.重新按utf-8加载编码 4.文件开头添加 #pr…

【区块链+ 医疗健康】基于区块链和AI 技术的儿童近视防控大数据平台 | FISCO BCOS 应用案例

随着电子产品的普及和学生学习压力的增加&#xff0c; 儿童近视问题日益严重。传统的防控手段难以满足大规模、个性化的需求&#xff0c;而基于区块链技术的儿童近视防控大数据平台能够提供更加精准、安全和高效的解决方案。 水木清源&#xff08;深圳&#xff09;智能科技有限…

数据类设计_图片类设计之3_半规则图类设计(前端架构基础)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇讨论半规则图类型的设计 半规则图的定义 什么是半规则图?笔者看见了一些似乎规则又不是太规则的图形,例如带圆角的矩阵,在页面上找一个圆角框 为了…