🛬🛬🛬来一篇nvm不完全指南

2021-08-08  本文已影响0人  超神熊猫

一、NVM是什么?

nvm是node版本管理工具

nvm是让你在同一台机器上安装和切换不同版本的node的工具

为什么需要nvm?

作为一个走在潮流前沿的前端开发者,node在一直更新,我们都在紧紧跟随,当你在玩着最新的node版本(写文章的时候最新node版本是v16.6.1),玩得正欢快的时候,你的领导从某个角落里翻出了一个旧项目,让你去维护一下,当你运行项目的时候,你发现,这个旧项目,竟然需要node版本8.X.X的时候,你怎么办???你要卸载掉你电脑最新的node,重新安装一个古老的版本吗?\color{red}{显然不能},这个时候我们需要的是可以在我们电脑同时存在多个node版本,并且可以随意切换的工具,nvm闪亮✨登场

二、nvm安装

1. 温馨提示,你也可以不听

卸载掉当前安装的node

卸载掉当前安装的node

卸载掉当前安装的node

我曾经因为年少轻狂没卸载,出现node_cache混淆和node版本切换无效的问题

如果还有因为没卸载node出现什么翻车事故的靓仔,请记得来跟我分享一下

2. 安装方式

window

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

可下载以下版本:

解压后 nvm-setup.exe 直接傻瓜式一键安装

\color{red}{有坑:记得安装目录不要有特殊符号、中文、空格,比如:C: Program Files,这种目录就要不得}

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命令中拉取的域名是\color{red}{raw.githubusercontent.com},去搜一下,出现下面的结果

image.png

我们找到了解析的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日常使用

常用命令

安装示例

1. nvm ls

我们来用nvm安装一波node吧,先来个nvm ls 查看下当前的版本

image.png

简单的解读一下这张图,首先看到我电脑有三个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版本

image.png

切换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"

上一篇下一篇

猜你喜欢

热点阅读