nvm windows踩坑攻略
一、啥是nvm?
我们可能同时在进行2个项目,而2个不同的项目所使用的node版本又是不一样的,或者是要用更新的node版本进行试验和学习。这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,而nvm就是为解决这个问题而产生的,他可以方便的在同一台设备上进行多个node版本之间切换,而这个正是nvm的价值所在。下载地址来一个:https://github.com/coreybutler/nvm-windows/releases
二、nvm踩坑记
问题1:node版本切换功能失效,比如我装了10.15.3和6.17.1两个版本,10的版本正常能用,6的版本切不过去?
切到10版本,正常
nvm use 10.15.3
切到6版本,node失效,node指令都没了
nvm use 6.17.1
解决方案:卸载系统中原先安装的NodeJS,再统一用nvm重新安装
nvm
install
v10.15.3
nvm
install
v6.17.1
问题解决
问题2:node版本从10版本切换到6版本时,npm失效(一般发生在跨度较大的版本切换上,因为低版本node不支持高版本npm)
nvm use 10.15.3
nvm use 6.17.1
原因分析:因为nvm是管理node的,全局npm和node是不同目录的,node版本切换npm并不会切换,但是低版本node又不支持高版本的npm,所以失效
解决方案:安装低版本node的时候重新安装对应版本的npm,这样切换node版本的时候npm也会跟着切换,这里讲的不是很清楚,至于为啥重新安装npm后npm版本就能跟着node版本走我也不是很清楚,大家可以一起探索下。npm随着node重新安装的指令如下:
nvm
install
v6.17.1 --reinstall-packages-from=6.17.1
这样切换就正常了
问题3:node和npm重新安装后,并通过nvm切换到了6.17版本,去运行我们的咪咕新架构项目,node-sass报错了
不过人家给出了解决方案
npm rebuild node-sass
我们遵照着指令执行就可以解决了
三、nvm常用指令说明
nvm install [node version] // 安装node版本,node version'书写规范 "v" + 有效node版本号,如 "nvm install v6.17.1" nvm list [availabel] // 查看当前安装的node版本列表,加上availabel后是查看当前nvm能安装的官网上所有有效node版本,可简写为 "nvm ls" nvm use [node version] // 使当前环境切换到具体的node版本,这里的node version和 install 时候的version书写规范不一样,不要加 "v" 前缀,直接node版本号, |