Node版本管理器:NVM的使用以及安装问题
前言
前端开发过程经常遇到多个项目不兼容特定Node.js和npm版本的问题,频繁地卸载和重新安装适合版本显然是笨拙的解决方案。NVM(Node Version Manager)提供便捷切换Node版本及npm版本的解决方案。
安装nvm
访问nvm github地址,选择适合你的版本(推荐最新安装版)。执行安装程序,默认安装目录或自定义目录(请记住,后续需要使用)。
安装完成后。使用win + R
输入cmd打开管理员终端,键入nvm -v检测安装是否顺利。倘若顺利继续使用nvm ls
命令查看本机安装的Node版本。
注意
如过本机已存在Node和npm,安装时会提示“nvm 接管node的控制权”,点击是即可。有时nvm并不能顺利接管node,这种情况建议卸载原有Node,使用nvm重新安装相应的版本。
使用nvm安装Node及npm
使用nvm ls available
命令查看可用的Node版本。
| CURRENT | LTS | OLD STABLE | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
| 24.0.1 | 22.15.0 | 0.12.18 | 0.11.16 |
| 24.0.0 | 22.14.0 | 0.12.17 | 0.11.15 |
| 23.11.0 | 22.13.1 | 0.12.16 | 0.11.14 |
| 23.10.0 | 22.13.0 | 0.12.15 | 0.11.13 |
| 23.9.0 | 22.12.0 | 0.12.14 | 0.11.12 |
| 23.8.0 | 22.11.0 | 0.12.13 | 0.11.11 |
| 23.7.0 | 20.19.1 | 0.12.12 | 0.11.10 |
| 23.6.1 | 20.19.0 | 0.12.11 | 0.11.9 |
| 23.6.0 | 20.18.3 | 0.12.10 | 0.11.8 |
| 23.5.0 | 20.18.2 | 0.12.9 | 0.11.7 |
| 23.4.0 | 20.18.1 | 0.12.8 | 0.11.6 |
| 23.3.0 | 20.18.0 | 0.12.7 | 0.11.5 |
| 23.2.0 | 20.17.0 | 0.12.6 | 0.11.4 |
| 23.1.0 | 20.16.0 | 0.12.5 | 0.11.3 |
| 23.0.0 | 20.15.1 | 0.12.4 | 0.11.2 |
| 22.10.0 | 20.15.0 | 0.12.3 | 0.11.1 |
| 22.9.0 | 20.14.0 | 0.12.2 | 0.11.0 |
| 22.8.0 | 20.13.1 | 0.12.1 | 0.9.12 |
| 22.7.0 | 20.13.0 | 0.12.0 | 0.9.11 |
| 22.6.0 | 20.12.2 | 0.10.48 | 0.9.10 |
控制台打印的版本列表并不完整,如需更旧版本,可以使用已知正确的版本号安装。如nvm install 16.20.2
。
安装指定版本node和npm
1.假如你有“魔法梯子”,那么你大概率像我一样,只需简单的命令就能安装指定版本的node和npm。
nvm install 16.20.2
...
nvm install 23.10.0
...
nvm ls
23.10.0
* 16.20.2 (Currently using 64-bit executable)
// *表示当前使用的版本
//切换版本
nvm use version
//删除版本
nvm uninstall version
2.比较糟糕的一种情况是:nvm下载指定版本的Node所对应的npm时,常常会出现错误。解决方案是手动安装。
前往npm release地址页,找到对应npn版本下载ZIP,如:我安装的Node是v23.10.0,匹配的npm版本是v10.9.2
定位到nvm本机安装目录,如下图(假如你的nvm是最新版),旧版路径不同,但操作相同。
依次打开对应版本文件夹-> node_modules,把下载的npm压缩包解压至此,并修改文件夹名为npm
最新版本一般情况下完成以上步骤,再使用npm -v
就能识别npm,npm i 安装依赖也正常。
但旧版本nvm实际使用可能缺少相关@cli里的内容, 查看版本时不会出错,但是在下载时,会报错:
npm ERR! code MODULE_NOT_FOUND``
npm ERR! Cannot find module ``'libnpmfund'``
npm ERR! Require stack:``
npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\utils\reify-output.js``
npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\utils\reify-finish.js``
npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\commands\install.js``
npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\npm.js``
npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\cli.js``
npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\bin\npm-cli.js
npm ERR! A complete log of ``this run can be found ``in``:``
npm ERR! C:\Users\LENOVO\AppData\Local\npm-cache_logs\2024-01-30T05_06_13_698Z-debug-0.log
找到 workspaces 中的对应文件,拷贝到对应的文件夹下,不同版本的文件有些不同,有些没有config文件,arborist和config拷贝到 node_modules/@npmcli,其他的拷贝到 node_modules下。
完成以上步骤后,再检查npm版本以及测试安装依赖,可正常使用。