作为一个前端,node是我们的必备环境,在安装node的时候,我们姿势真的对了吗?一顿操作直接上官网安装一个node吗?着实不建议直接安装哈,有一个东西叫nvm,了解下
一、NVM是什么?
nvm是node版本管理工具
nvm是让你在同一台机器上安装和切换不同版本的node的工具
为什么需要nvm?
作为一个走在潮流前沿的前端开发者,node在一直更新,我们都在紧紧跟随,当你在玩着最新的node版本(写文章的时候官推node版本是v16.8.0),玩得正欢快的时候,你的领导从某个角落里翻出了一个旧项目,让你去维护一下,当你运行项目的时候,你发现,这个旧项目,竟然需要node版本8.X.X的时候,你怎么办???你要卸载掉你电脑最新的node,重新安装一个古老的版本吗?,这个时候我们需要的是可以在我们电脑同时存在多个node版本,并且可以随意切换的工具,nvm闪亮✨登场
二、nvm安装
1. 温馨提示,你也可以不听
卸载掉当前安装的node
卸载掉当前安装的node
卸载掉当前安装的node
我曾经因为年少轻狂没卸载,出现node_cache混淆和node版本切换无效的问题
如果还有因为没卸载node出现什么翻车事故的靓仔,请记得来跟我分享一下
2. 安装方式
window
链接:https://github.com/coreybutler/nvm-windows/releases
可下载以下版本:
- nvm-noinstall.zip:绿色免安装版,但使用时需要进行配置。
- nvm-setup.zip:安装版,推荐使用
解压后 nvm-setup.exe 直接傻瓜式一键安装
Mac
mac的安装相对于window来说,稍微麻烦一丢丢,还受macOS的版本影响,我这里用的是11.2.2,靓仔们要是安装过程有坑,可自行科普一下看看是不是受macOS的版本影响
1. 安装命令:
**
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
2. 检查安装
$ nvm --version
3. 检查安装的前提是你安装成功了,事实往往不如人意,总会有坑的情况,你可能会遇到以下的?
1. DNS污染报错,拉取nvm的过程中,DNS 解析被污染导致无法正常读取(当然可能还有其他的原因,其他原因暂没了解到,有知道的大佬,请指教)
curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
DNS污染解决方法:
1. 去IPAddress.com查看真实的ip
2. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash命令中拉取的域名是,去搜一下,出现下面的结果
我们找到了解析的ip,有四个,随便拎一个出来(当然运气不好,可能你拎出来那个用不了,你就自己再换一个)
3. 修改host
$ sudo vim /etc/hosts
在host里面添加
185.199.108.133 raw.githubusercontent.com
搞完重新再拉取一次试试
2. zsh: command not found: nvm
安装过程没有报错,但是执行$ nvm --version
提示 zsh: command not found: nvm,小靓仔,环境变量问题,搞一下就好了,莫慌
参考资料:- 《Mac下配置.bash_profile(环境变量)》
三、nvm日常使用
常用命令
- nvm ls 列出所有安装的版本
- nvm ls-remote 列出所有可安装的版本
- nvm install <version> 安装指定版本,如:安装v4.4.0,nvm install v4.4.0
- nvm install stable 安装最新稳定版 node
- nvm uninstall <version> 删除已安装的指定版本,语法与install类似
- nvm use <version> 切换使用指定的版本node
- nvm alias default <version> 如: nvm alias default v11.1.0
- nvm --help 大招,查看所有帮助命令
安装示例
1. nvm ls
我们来用nvm安装一波node吧,先来个nvm ls 查看下当前的版本
简单的解读一下这张图,首先看到我电脑有三个node的版本
分别是v8.17.0、v12.18.4、v14.17.4三个版本
当前正在使用的版本是v14.17.4 可以通过
nvm use <version>
切换版本默认版本是:v14.17.4 为什么会有这个默认版本的存在? 通过
nvm use <version>
切换的版本只是临时的,在你关闭终端后,就会恢复默认的版本,如果你想要长时间切换指定版本,那就设置这个默认版本
nvm alias default <version> 如: nvm alias default v11.1.0
2. nvm ls-remote
如果我们一时半不会不知道安装哪个版本,那我们就来一条
nvm ls-remote
查看下有哪些node版本可以安装的
我们随便挑一个,直接nvm install vxx.xx.xx,然后安装完后nvm ls 查看会发现已经下载下来了
nvm install v11.1.0
nvm ls
如果我们只是短期在某个项目上用,那就直接nvm use vxx.xx.xx即可,如果长期用,记得设置默认版本
nvm alias default <version> 如: nvm alias default v11.1.0
四、坑点记录
全局依赖包安装了找不到?
其实就是nvm切换node版本后,全局的node_modules指向不改变
在使用nvm过程中,切换到某个node版本后,在这个版本下安装某个全局包,我们这里以nrm举例子
科普:nrm(npm registry manager )是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm 源间切换
如:原本使用的node是12的版本,我闲来无事切换到了14的版本,安装了个nrm,执行nrm的时候,发现报错,提示没有这个依赖。
我们可以通过
npm config ls //查看下npm的配置
问题来了,如果切换了node版本后,全局依赖安装失败,检查下npm prefix这个配置中的node是否是你当前使用的node版本
切换node版本后,全局安装依赖,安装完后,找不到包
原因是因为切换node之后,安装全局依赖仍然在原来的版本下,这个时候你不管怎么安装新的依赖,都是安装在以前的全局node_modules下
解决方案:
我们要把cache和prefix对应修改成我们要的版本
npm config set prefix "D:\ProgramFiles\nvm\v版本\node_cache"
npm config set cache "D:\ProgramFiles\nvm\v12.12.0\node_cache"