??????來一篇nvm不完全指南

一、NVM是什么?

nvm是node版本管理工具

nvm是讓你在同一臺(tái)機(jī)器上安裝和切換不同版本的node的工具

為什么需要nvm?

作為一個(gè)走在潮流前沿的前端開發(fā)者,node在一直更新,我們都在緊緊跟隨,當(dāng)你在玩著最新的node版本(寫文章的時(shí)候最新node版本是v16.6.1),玩得正歡快的時(shí)候,你的領(lǐng)導(dǎo)從某個(gè)角落里翻出了一個(gè)舊項(xiàng)目,讓你去維護(hù)一下,當(dāng)你運(yùn)行項(xiàng)目的時(shí)候,你發(fā)現(xiàn),這個(gè)舊項(xiàng)目,竟然需要node版本8.X.X的時(shí)候,你怎么辦???你要卸載掉你電腦最新的node,重新安裝一個(gè)古老的版本嗎?\color{red}{顯然不能},這個(gè)時(shí)候我們需要的是可以在我們電腦同時(shí)存在多個(gè)node版本,并且可以隨意切換的工具,nvm閃亮?登場

二、nvm安裝

1. 溫馨提示,你也可以不聽

卸載掉當(dāng)前安裝的node

卸載掉當(dāng)前安裝的node

卸載掉當(dāng)前安裝的node

我曾經(jīng)因?yàn)槟晟佥p狂沒卸載,出現(xiàn)node_cache混淆和node版本切換無效的問題

如果還有因?yàn)闆]卸載node出現(xiàn)什么翻車事故的靚仔,請(qǐng)記得來跟我分享一下

2. 安裝方式

window

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

可下載以下版本:

  • nvm-noinstall.zip:綠色免安裝版,但使用時(shí)需要進(jìn)行配置。

  • nvm-setup.zip:安裝版,推薦使用

解壓后 nvm-setup.exe 直接傻瓜式一鍵安裝

\color{red}{有坑:記得安裝目錄不要有特殊符號(hào)、中文、空格,比如:C: Program Files,這種目錄就要不得}

mac

mac的安裝相對(duì)于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. 檢查安裝的前提是你安裝成功了,事實(shí)往往不如人意,總會(huì)有坑的情況,你可能會(huì)遇到以下的?

1. DNS污染報(bào)錯(cuò),拉取nvm的過程中,DNS 解析被污染導(dǎo)致無法正常讀?。ó?dāng)然可能還有其他的原因,其他原因暫沒了解到,有知道的大佬,請(qǐng)指教)

curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

DNS污染解決方法:

1. 去IPAddress.com查看真實(shí)的ip

2. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash命令中拉取的域名是\color{red}{raw.githubusercontent.com},去搜一下,出現(xiàn)下面的結(jié)果

image.png

我們找到了解析的ip,有四個(gè),隨便拎一個(gè)出來(當(dāng)然運(yùn)氣不好,可能你拎出來那個(gè)用不了,你就自己再換一個(gè))

3. 修改host


$ sudo vim /etc/hosts

在host里面添加


185.199.108.133 raw.githubusercontent.com

搞完重新再拉取一次試試

2. zsh: command not found: nvm

安裝過程沒有報(bào)錯(cuò),但是執(zhí)行$ nvm --version提示 zsh: command not found: nvm,小靚仔,環(huán)境變量問題,搞一下就好了,莫慌

參考資料:- 《Mac下配置.bash_profile(環(huán)境變量)》

三、nvm日常使用

常用命令

  • nvm ls 列出所有安裝的版本

  • nvm ls-remote 列出所有可安裝的版本

  • nvm install <version> 安裝指定版本,如:安裝v4.4.0,nvm install v4.4.0

  • nvm install stable 安裝最新穩(wěn)定版 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吧,先來個(gè)nvm ls 查看下當(dāng)前的版本

image.png

簡單的解讀一下這張圖,首先看到我電腦有三個(gè)node的版本

分別是v8.17.0、v12.18.4、v14.17.4三個(gè)版本

當(dāng)前正在使用的版本是v14.17.4 可以通過 nvm use <version> 切換版本

默認(rèn)版本是:v14.17.4 為什么會(huì)有這個(gè)默認(rèn)版本的存在? 通過nvm use <version>切換的版本只是臨時(shí)的,在你關(guān)閉終端后,就會(huì)恢復(fù)默認(rèn)的版本,如果你想要長時(shí)間切換指定版本,那就設(shè)置這個(gè)默認(rèn)版本


nvm alias default <version>  如: nvm alias default v11.1.0

2. nvm ls-remote

如果我們一時(shí)半不會(huì)不知道安裝,那我們就來一條


nvm ls-remote

查看下有哪些node版本可以安裝的

我們隨便挑一個(gè),直接nvm install vxx.xx.xx,然后安裝完后nvm ls 查看會(huì)發(fā)現(xiàn)已經(jīng)下載下來了


nvm install v11.1.0

nvm ls

如果我們只是短期在某個(gè)項(xiàng)目上用,那就直接nvm use vxx.xx.xx即可,如果長期用,記得設(shè)置默認(rèn)版本


nvm alias default <version>  如: nvm alias default v11.1.0

四、坑點(diǎn)記錄

全局依賴包安裝了找不到?

其實(shí)就是nvm切換node版本后,全局的node_modules指向不改變

在使用nvm過程中,切換到某個(gè)node版本后,在這個(gè)版本下安裝某個(gè)全局包,我們這里以nrm舉例子

科普:nrm(npm registry manager )是npm的鏡像源管理工具,有時(shí)候國外資源太慢,使用這個(gè)就可以快速地在 npm 源間切換

如:原本使用的node是12的版本,我閑來無事切換到了14的版本,安裝了個(gè)nrm,執(zhí)行nrm的時(shí)候,發(fā)現(xiàn)報(bào)錯(cuò),提示沒有這個(gè)依賴。

我們可以通過


npm config ls  //查看下npm的配置

問題來了,如果切換了node版本后,全局依賴安裝失敗,檢查下npm prefix這個(gè)配置中的node是否是你當(dāng)前使用的node版本

image.png

切換node版本后,全局安裝依賴,安裝完后,找不到包

原因是因?yàn)榍袚Qnode之后,安裝全局依賴仍然在原來的版本下,這個(gè)時(shí)候你不管怎么安裝新的依賴,都是安裝在以前的全局node_modules下

解決方案:

我們要把cache和prefix對(duì)應(yīng)修改成我們要的版本


npm config set prefix "D:\ProgramFiles\nvm\v版本\node_cache" 

npm config set cache "D:\ProgramFiles\nvm\v12.12.0\node_cache"

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容