你是不是也遇到过这种崩溃瞬间?前脚刚接了个老项目,跑起来提示Node版本太低;后脚开了个新工程,又嫌你Node版本太老。就这么来回折腾,一天光在卸载重装Node了,代码还没写两行,脾气倒是涨了不少。
别急,今天给你安利个宝藏工具——nvm(Node Version Manager)。这玩意儿堪称Node.js界的"变形金刚",能让你在电脑上同时装十多个Node版本,秒切秒换,丝滑得像德芙巧克力。
这玩意儿到底能干啥
简单说,nvm就是个Node版本管理器。它允许你在同一台机器上安装、切换、管理不同的Node.js版本。老项目要用Node 16?没问题。新项目要求Node 20?一句话的事儿。
它的工作原理也挺有意思。不像你之前那种直接覆盖安装,nvm会在~/.nvm目录下给每个版本都建个"独立房间",用的时候通过修改PATH环境变量来切换,各版本之间井水不犯河水,绝对不会打架。
而且啊,它是纯bash脚本写的,不依赖啥复杂环境,macOS、Linux、甚至Windows的WSL都能跑,轻量得很。
安装教程(手把手版)
安装nvm其实贼简单,但坑也不少,我按不同系统给你掰扯清楚。
macOS / Linux 用户
打开终端,复制粘贴这行命令:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash要是你那边curl抽风,也可以用wget:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash执行完它会自动在~/.nvm clone代码,并往你的shell配置文件(.bashrc、.zshrc或.bash_profile)里追加几行环境变量。装完记得重启终端,或者手动source一下:
source ~/.zshrc # 或者 source ~/.bashrc验证装没装成,输入:
command -v nvm看到输出nvm仨字,恭喜你,成了!
小坑提醒:macOS 10.15以后默认是zsh,如果你发现装完输入nvm提示找不到命令,八成是因为没.zshrc文件。手动touch ~/.zshrc创建一个,再重装一遍nvm就好了。
Windows 用户注意了
Windows上得用nvm-windows,这是社区维护的版本,跟原版的nvm不是一回事儿,但用法差不多。
去GitHub releases页面下载nvm-setup.zip,解压运行安装程序。安装时会让你选两个路径:
nvm安装路径(比如 C:\Users\你的用户名\AppData\Roaming\nvm)Node.js快捷方式路径(比如 C:\Program Files\nodejs)
关键点来了:安装前务必把之前装的Node.js卸干净,包括C:\Program Files\nodejs和C:\Users\你的用户名\AppData\Roaming\npm这些目录,不然会冲突。
装完在CMD或PowerShell里输入nvm version看看版本号,出来数字就是成功了。

常用操作(建议收藏)
装好了就得用起来,这几个命令是你每天都会打交道的:
1. 查看能装哪些版本
nvm ls-remote # macOS/Linux看远程可用版本nvm list available # Windows版用这个输出会列出从远古版本到最新版的所有Node,LTS(长期支持)版本一般标着绿色。
2. 安装指定版本
nvm install 20 # 装最新的Node 20.xnvm install 18.19.0 # 装精确版本nvm install --lts # 直接装最新LTS版,推荐这个第一次安装会比较慢,因为它要去nodejs.org下载二进制包。国内用户如果觉得慢,可以配镜像源:
# macOS/Linux 加到 ~/.zshrc 或 ~/.bashrcexport NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node# Windows 去nvm安装目录改settings.txt,加这两行:node_mirror: https://npmmirror.com/mirrors/node/npm_mirror: https://npmmirror.com/mirrors/npm/3. 查看和切换版本
nvm ls # 看本地已装的版本,带星号的是当前在用的nvm use 18 # 切换到Node 18的最新版nvm use 16.14.0 # 切换到指定版本切换是即时生效的,不用重启终端,切完node -v看看,版本号变了就是成功了。
4. 设置默认版本
每次新开终端都要手动nvm use挺烦的,可以设个默认:
nvm alias default 18.19.0这样新开的shell会自动用这个版本,省心。
进阶玩法(效率翻倍)
会用基础命令只是入门,这几个技巧才是真的香。
.nvmrc文件自动切换
在项目根目录建个.nvmrc文件,里面写上版本号,比如:
18.19.0或者写lts/*表示用最新LTS版。以后一进到这个项目目录,运行:
nvm use它会自动读取文件里的版本并切换。配合自动加载脚本(下面这段加到.zshrc或.bashrc),还能实现cd进目录自动切换:
cdnvm() {commandcd"$@" || return $? nvm_path="$(nvm_find_up .nvmrc | command tr -d '\n')"if [[ ! $nvm_path = *[^[:space:]]* ]]; thendeclare default_version="$(nvm version default)"if [ "$(nvm current)" != "${default_version}" ]; then nvm use defaultfielif [[ -s "${nvm_path}/.nvmrc" && -r "${nvm_path}/.nvmrc" ]]; then nvm usefi}aliascd='cdnvm'cdnvm "$PWD" || exit迁移全局包
换Node版本时,之前全局装的包(比如npm install -g @vue/cli)不会自动跟过来,可以用:
nvm install 20 --reinstall-packages-from=18这样会把Node 18里的全局包自动装到Node 20里,省得再敲一遍命令。
离线安装
有时候网络不好,或者你在飞机上想装个Node,可以用离线模式:
nvm install --offline 18.19.0前提是之前下载过这个版本的缓存。
踩坑实录(血泪经验)
用了这么久,这几个坑你得避开:
切换版本后全局包不见了正常现象!每个Node版本的全局包是独立的。要么重新装,要么用上面的
--reinstall-packages-from迁移。Windows下nvm use提示权限不足右键以管理员身份运行CMD或PowerShell,nvm-windows需要创建符号链接,普通权限搞不定。
装完nvm but命令找不到大概率是shell配置文件没生效。检查
~/.bashrc或~/.zshrc里有没有那几行初始化代码,没有就手动加上:export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"M1/M2 Mac装老版本Node报错Apple Silicon的Mac跑Node 15以下可能会崩,因为那些版本没原生支持arm64。要么装x86版本通过Rosetta转译,要么干脆别用太老的Node。
写在最后
nvm这工具吧,看着不起眼,但用惯了真的回不去。以前那种"一个Node版本走天下"的日子,现在想想都头大。现在不管接手多老的项目,还是折腾多新的框架,心里都有底——反正也就是一行命令的事儿。
版本管理这件事,看似是小事,但省下来的时间和精力,够你多写好多业务代码了。更别说团队协作的时候,.nvmrc一扔,大家环境统一,再也不会出现"我这边能跑你那边不行"的尴尬。
项目地址放这儿了,觉得有用的话去点个Star呗:
https://github.com/nvm-sh/nvm
夜雨聆风