node 的迭代速度很快,所以目前有很多 node 版本共存着。
有很多的包,都需要在特定版本的 node 环境下才能正常运行。LvLin 在使用 gitbook-cli 的时候,就发现它无法在 v16 版本的 node 环境中运行。
那遇到 node 环境不匹配时该怎么办?解决办法很简单,多装几个就好了(光想想就让人难受)。
为了方便处理多个 node 版本切换的问题,业界涌现了一众 node 版本管理工具:nvm、nvs、n。本文主要介绍 nvm 和 nvm-windows 的安装及使用。
nvm
node 版本管理工具,支持 mac 和 linux 系统,windows 系统使用 nvm-windows 进行替代。
由于 LvLin 使用的 windows 系统,所以这里仅做介绍,不做演示,具体使用可参考 nvm-windows。
安装
通过 shell 脚本进行安装:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
安装好后,确认配置文件 ~/.bashrc 是否存在以下片段,如果没有则手动加上:
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
执行 source 命令,使系统环境变量生效:
$ source ~/.bashrc
完成 nvm 的安装,查看版本号:
$ nvm --version
更多安装方法参考官方仓库。
使用
列出当前 nvm 可以安装的 node 版本:
$ nvm ls-remote
安装具体的版本:
$ nvm install 14.18.0
$ nvm install 8
列出已安装的 node 版本:
$ nvm ls
切换 node 版本:
$ nvm use 8
当我们在 14 版本的 node 上安装了一些全局包,切换到 8 版本的 node 后,这些包需要重新安装才能使用。
这时候可以通过 nvm reinstall-packages 指令,一键安装全局包。
$ nvm use 14.18.0
$ nvm reinstall-packages 8
这样,就在 v8 版本的 node 中也装上了跟 v14 版本 node 环境同样的全局包了。
nvm-windows
nvm 不支持 windows 系统,所以我们使用 nvm-windows 进行替代。
安装
到 nvm-windows 仓库 下载安装包,解压安装即可。
如果无法下载,可以关注 LvLin 的公众号【玩点前端】,发送关键词【nvm】获取网盘资源进行下载。
安装完毕,以管理员身份打开 PowerShell,输入 nvm version 查看是否安装成功。
> nvm version
1.1.8
使用
nvm list available:列出可安装的 node 版本,可以缩写为 nvm ls available。
nvm install:安装指定版本的 node。安装 v16.12.0和v14.18.0版本的 node 如下图所示:
nvm list:查看当前已安装的 node 版本,可以缩写为 nvm ls。
> nvm list
16.12.0
14.18.0
nvm use <version>:使用指定版本的 node 环境。
通过 nvm list 或 nvm current 可以查看当前使用的 node 版本。
nvm uninstall <version>:卸载指定版本的 node。
> nvm uninstall 14.18.0
Uninstalling node v14.18.0... done
nvm node_mirror [url]:切换 node 镜像源,nvm npm_mirror [url]:切换 npm 镜像源。
> nvm node_mirror https://npm.taobao.org/mirrors/node/
> nvm npm_mirror https://npm.taobao.org/mirrors/npm/
也可以通过修改配置文件的方式进行镜像源的修改。使用nvm root,查看 nvm 的安装路径:
> nvm root
Current Root: C:\Users\LvLin\AppData\Roaming\nvm
找到文件setting.txt,修改node_mirror与npm_mirror。
更多命令可以通过 nvm 进行查看。
异常
-
出现
exit status 1,通常是由于权限不够,需要使用管理员身份运行PowerShell。nvm-windows runs in an Admin shell. You'll need to start
powershellor Command Prompt as Administrator to use nvm-windows -
npm安装包时异常,尝试切换成淘宝镜像源。方式1:
nvm npm_mirror https://npm.taobao.org/mirrors/npm/方式2:找到安装
nvm的文件夹下的settings.txt文件,新增镜像源配置:root: C:\nvm path: C:\nodejs + node_mirror: http://npm.taobao.org/mirrors/node/ + npm_mirror: https://npm.taobao.org/mirrors/npm/