🛬🛬🛬你的node环境真的装对了吗?

作为一个前端,node是我们的必备环境,在安装node的时候,我们姿势真的对了吗?一顿操作直接上官网安装一个node吗?着实不建议直接安装哈,有一个东西叫nvm,了解下

一、NVM是什么?

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

为什么需要nvm?

作为一个走在潮流前沿的前端开发者,node在一直更新,我们都在紧紧跟随,当你在玩着最新的node版本(写文章的时候官推node版本是v16.8.0),玩得正欢快的时候,你的领导从某个角落里翻出了一个旧项目,让你去维护一下,当你运行项目的时候,你发现,这个旧项目,竟然需要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-noinstall.zip:绿色免安装版,但使用时需要进行配置。
  • nvm-setup.zip:安装版,推荐使用

解压后 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日常使用

常用命令

  • 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 查看下当前的版本

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"
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容