NodeJS版本管理工具-nvm

前言

nvm 是NodeJS版本管理工具。

查看版本

NVM版本

1
nvm version

推荐最新版

1.2.2

查看NODEJS版本

1
2
node -v
npm -v

所以升级Node版本即可,这里使用nvm管理Node版本

安装

Windows

nvm可以通过下面的连接下载安装即可。

http://nvm.uihtm.com/

https://github.com/coreybutler/nvm-windows

Download the latest installer

链接:https://pan.baidu.com/s/1tvOu3UoIUF2riVRqbcmqTA

提取码:763s

注意

安装路径不能出现空格,否则安装失败!

安装路径不能出现空格,否则安装失败!

安装路径不能出现空格,否则安装失败!

安装后会自动创建以下的环境变量

  • NVM_HOME:指向 nvm 的安装目录。
  • NVM_SYMLINK:指向当前使用的 Node.js 版本的符号链接目录。

查看环境变量

1
2
echo %NVM_HOME%
echo %NVM_SYMLINK%

Mac

Mac 使用的是 Unix 版 nvm ,和 Linux 同一套工具,不是 Windows 上的 nvm-windows 。
当前系统默认 shell 一般是 zsh ,配置写进 ~/.zshrc

如果之前用 pnpm env 管理 Node.js 版本,需要先去掉相关配置。
否则 PATH 里的 pnpm Node 会盖住 nvm 切换的版本。

卸载 pnpm env

只去掉 pnpm 管理 Node 运行时的配置,不必卸载 pnpm 本身。
打开 zsh 配置文件。

1
vi ~/.zshrc

如果曾自定义 pnpm 的 Node 目录,删除类似下面这一行。
路径按本机实际配置修改,常见写法是把 ~/tools/pnpm/bin 加进 PATH

1
export PATH="/Users/psvmc/tools/pnpm/bin:$PATH"

PNPM_HOME 那一段是 pnpm 自身的入口。
如果还要用 pnpm 装包就先留着,只处理它放进去的 Node 。

保存后重新加载配置。

1
source ~/.zshrc

如果本机还能执行 pnpm ,先看当前全局 Node 是不是 pnpm 装的。

重新打开终端

1
which node

这时应该找不到node了。

也可以直接删掉 bin 目录里的 nodenpmnpx ,避免继续抢占命令。

1
2
rm -f ~/Library/pnpm/node ~/Library/pnpm/npm ~/Library/pnpm/npx
rm -rf ~/tools/pnpm

安装NVM

一键安装

国内可用 nvm-cn 脚本安装。

1
bash -c "$(curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh)"

安装前需要已安装 git
安装脚本会把初始化语句追加到 ~/.zshrc
执行下面命令让当前终端生效。

1
source ~/.zshrc

Homebrew 安装

也可以用 Homebrew 安装。

1
2
brew install nvm
mkdir -p ~/.nvm

Homebrew 装完后不会自动接入 shell ,需要在 ~/.zshrc 中手动加载。
Apple Silicon 机器上路径一般是 /opt/homebrew/opt/nvm ,Intel 机器一般是 /usr/local/opt/nvm
~/.zshrc 中追加下面内容,路径按本机 Homebrew 前缀调整。

1
2
3
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"

加载后执行 source ~/.zshrc

添加国内 Node 镜像,避免直连官方源过慢。
把下面这行写进 ~/.zshrc ,然后再次执行 source ~/.zshrc

1
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/

此时可以查看远程可用版本。

1
nvm ls-remote

Linux

国内镜像

安装

1
2
3
4
sudo apt install curl git
bash -c "$(curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh)"

source ~/.bashrc

添加

1
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/

输入后,在终端中输入下面的命令使其生效,然后可以接着运行nvm命令

1
source ~/.bashrc

此时运行 查看所有可用版本

1
nvm ls-remote

镜像

NVM镜像

Windows

设置镜像地址

在 nvm 的安装路径下,找到 settings.txt

查找nvm路径(只能在CMD中使用)

1
where nvm

添加后内容如下:

1
2
3
node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/
root: D:\Tools\nvm

或者执行

1
2
3
nvm npm_mirror https://npmmirror.com/mirrors/npm/
nvm node_mirror https://npmmirror.com/mirrors/node/
nvm root D:\Tools\nvm

Mac

Mac 与 Linux 一样,把镜像写进 shell 配置即可。
zsh 用户编辑 ~/.zshrc ,加入:

1
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/

然后执行 source ~/.zshrc

NPM镜像

1
2
3
npm config set registry https://registry.npmmirror.com/
npm cache clean -f
npm config list

其中npm config提供的参数:

  • registry 是设置依赖的镜像
  • disturl是设置Node的镜像
  • sass_binary_site是sass的镜像
  • electron_mirror是electron的镜像
  • python_mirror是python的镜像

新版本除了registry,其他都没法用命令设置了

我们可以编辑文件

1
npm config edit

添加

1
2
3
4
5
registry=https://registry.npmmirror.com/
disturl=http://npmmirror.com/mirrors/node/
electron_mirror=http://npmmirror.com/mirrors/electron/
python_mirror=http://npmmirror.com/mirrors/python/
sass_binary_site=http://npmmirror.com/mirrors/node-sass/

切换版本

1
2
3
4
5
6
7
8
# 查看可用版本
nvm list

# 安装
nvm install 22.23.2

# 切换
nvm use 22.23.2

查看node和npm版本

1
2
node -v
npm -v

常见问题

安装依赖报错

npm install的时候报错

当通过nvm切换nodejs版本为16以上时,npm install [package]报错:

Unexpected token ‘.’

原因是nvm-windows的问题,需要升级NVM版本

我这里升级到最新的1.2.2版本就没问题了

https://github.com/coreybutler/nvm-windows/releases

下载后要卸载并重新下载NodeJS

1
2
3
nvm uninstall 18.20.8
nvm install 18.20.8
nvm use 18.20.8

查看NVM版本

1
nvm version

下载提示证书失效

npm ERR! request to https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz failed, reason: certificate has expired

临时不验证证书

1
npm config set strict-ssl false

安装完所需的包后,最好将此设置还原,以保持更高的安全性:

1
npm config set strict-ssl true

下载版本失败

使用最新版本的NVM,安装路径不要有中文和空格。