最近給家里電腦重裝系統(tǒng),都重新安裝了 nvm,就記錄了一下,也方便大家避坑
簡介
nvm 是什么?和 npm 是什么關(guān)系?
-
npm:是 nodejs 包的管理工具,在安裝 node 的時(shí)候,npm 也會(huì)自動(dòng)一起安裝,因?yàn)槊總€(gè) node 版本都有對(duì)應(yīng)的 npm 版本 -
nvm:是 node 版本管理工具,可以同時(shí)在電腦上安裝多個(gè)不同版本 node,可以非常方便的操作 node 不同版本的切換、安裝、查看等等
nvm 的好處?
比如你電腦上可能跑多個(gè)項(xiàng)目的時(shí)候,且不同項(xiàng)目所需 node 版本不一致時(shí);
比如升級(jí)了項(xiàng)目的 node 版本,結(jié)果發(fā)現(xiàn)有問題,需要再換回之前的版本時(shí);
如果每次都卸載電腦上的 node 再去下載新的版本,可就太坑了,所以 nvm 來了,直接一條命令讓我們切換不同的 node 版本,非常方便
如果你的電腦已經(jīng)安裝了 node,那么在安裝 nvm 之前要先卸載掉,避免后面產(chǎn)生不必要的沖突
Window 控制面板程序卸載或者用其他的應(yīng)用卸載都行
Mac 卸載:
# 刪除全局 node_modules 目錄
sudo rm -rf /usr/local/lib/node_modules
# 刪除 node
sudo rm /usr/local/bin/node
# 刪除全局 node 模塊注冊(cè)的軟鏈
cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm
Mac 安裝 nvm
安裝命令
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
命令中的 v0.39.2 是版本號(hào),是 Mac 當(dāng)前最新版,如果需要安裝不同版本,修改這里即可
安裝完成后,在命令行窗口輸入 nvm 回車,安裝成功會(huì)出現(xiàn)滿滿一頁的各種信息,如果只有 nvm: command not found,就說明沒安裝成功
沒安裝成功的話,執(zhí)行 echo $0 命令,看下當(dāng)前的 shell 是 bash 還是 zsh
如果是 bash 安裝失敗基本是沒有 .bash_profile 這個(gè)文件,可以使用 open .bash_profile 命令打開這個(gè)文件試下,打不開就說明沒有,那么執(zhí)行下面命令創(chuàng)建一個(gè),再重新執(zhí)行上面的安裝命令即可
# 創(chuàng)建 .bash_profile 文件
touch ~/.bash_profile
如果是 zsh,那就打開 open .zshrc 文件,在里面添加一行 source ~/.bash_profile,如果打不開這個(gè)文件,就先創(chuàng)建一個(gè),再添加,再重新執(zhí)行上面的安裝命令即可
# 創(chuàng)建 .zshrc 文件
touch ~/.zshrc
# 創(chuàng)建完成,再打開,在里面添加這個(gè)
source ~/.bash_profile
安裝成功后怎么使用,請(qǐng)繼續(xù)看
Window 安裝 nvm

安裝過程中一路點(diǎn)下一步的話就到 C 盤了(也可以自定義目錄),到這里執(zhí)行 nvm 命令肯定不會(huì)失敗,接下來就安裝 node 就行了,比如安裝 16.16.0 這個(gè)版本的 node 就執(zhí)行如下命令,如下版本號(hào)前加不加 v 是一模一樣的
# nvm install v16.16.0
nvm install 16.16.0
注意這里的 install 不能省略成 i,會(huì)報(bào)錯(cuò)
安裝有可能失敗,也有可能成功,也有可能成功一半,成功一半的意思是 node 安裝成功,但是 npm 安裝失敗,終端不會(huì)提示這個(gè)失敗信息,只是在安裝完成后輸入 node -v 有值,npm -v 就報(bào)錯(cuò)
所以建議在使用 nvm install xxxx 之前,先打開 nvm 安裝目錄下的 settings.text 如圖:

在該文件里添加下面兩行代碼,然后保存。表示使用淘寶境像安裝 node 和 npm,再運(yùn)行 nvm install xxxx 即可,就不會(huì)安裝失敗了
node_mirror:npm.taobao.org/mirrors/node/
npm_mirror:npm.taobao.org/mirrors/npm/
如果不想用淘寶鏡像,也可以放心。這里的淘寶鏡像只是針對(duì) node 和 npm 這兩個(gè)東西的安裝,不是項(xiàng)目中的 npm i xxx 也用淘寶鏡的意思,項(xiàng)目中的需要另外配置,項(xiàng)目中使用淘寶鏡像如下:
# npm 用淘寶鏡像
npm config set registry http://registry.npm.taobao.org/
# 或安裝 cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm config set registry https://registry.npm.taobao.org
cnpm config get registry
cnpm -v
如果你不想用淘寶鏡像,卻出現(xiàn)安裝了 node 卻沒有 npm 的問題,那只能手動(dòng)安裝 npm,如下
先查看 node 不同版本對(duì)應(yīng) npm 版本號(hào):點(diǎn)擊前往
再去下載對(duì)應(yīng)的 npm 版本的 zip 文件:點(diǎn)擊前往
下載好之后:
- 把解壓出來的文件夾(
cli-xxxx)重命名為npm - 放入對(duì)應(yīng) node 版本下的
node_modules文件夾里面 - 然后打開該 npm 文件夾里的
bin文件夾,把里面的npm 文件和npm.cmd 文件復(fù)制,放到對(duì)應(yīng) node 版本下,和node_modules文件夾同級(jí)即可
上面操作完成之后,執(zhí)行 node -v 和 npm -v 就都有了
接著需要執(zhí)行 nvm on 命令來開啟使用 nvm 來管理 node,如果這個(gè)命令報(bào)錯(cuò),請(qǐng)打開管理員模式的 cmd 或 powershell,再執(zhí)行 nvm on 即可
nvm 常用命令
比較常用的幾個(gè)命令,注意看下注釋
nvm install <版本號(hào)> // 安裝指定 node 版本,版本號(hào)如寫 14.5.0 或 v14.5.0 效果一樣
nvm uninstall <版本號(hào)> // 卸載指定 node 版本
nvm install stable // 安裝最新穩(wěn)定版 node
nvm ls // 查看已經(jīng)安裝了的所有 node 版本
nvm on // 開啟使用 nvm 管理 node
nvm use <版本號(hào)> // 切換到指定 node 版本
nvm alias default <版本號(hào)> // 如果 nvm use xxx 換不了,就用這個(gè)換
nvm off // 關(guān)閉 nvm 管理 node
修改 npm 全局目錄及環(huán)境變量
Window 下可以使用 npm root -g 命令查看默認(rèn)全局安裝目錄,大概是這樣的
C:\Users\Administrator\AppData\Roaming\npm\node_modules
如果想把全局目錄和緩存文件單獨(dú)放到其他地方方便區(qū)分管理,且不占 C 盤的話,可以自己隨意在其他盤新建目錄,比如有如下目錄結(jié)構(gòu)用來存放
D:
└─node
├─node_cache
└─node_global
└─node_modules
先執(zhí)行如下兩條命令修改默認(rèn) npm 全局安裝路徑,和安裝過程緩存文件存儲(chǔ)路徑
# 上面的路徑,如下,如果設(shè)置失敗看后面的后續(xù)處理第 1 條
npm config set prefix 'D:/node/node_global'
npm config set cache 'D:/node/node_cache'
# 然后輸入下面這個(gè)命令查看是否修改成功
npm config ls
然后配置環(huán)境變量即可
在用戶或系統(tǒng)變量 path 里添加:D:/node/node_global
在系統(tǒng)變量添加 NODE_PATH:D:/node/node_global/node_modules
安裝后續(xù)錯(cuò)誤處理
只是 windows 會(huì)存在如下問題
用 npm 安裝插件報(bào)錯(cuò)或設(shè)置 npm 全局路徑報(bào)錯(cuò)
npm ERR! Please try running this command again as root/Administrator
解決方案:
刪除 .npmrc 文件,文件位置:C:\Users\{賬戶}\.npmrc,有些電腦沒有 Users 文件夾的,而是中文的【用戶】文件夾,是一樣的
安裝好的東西不能加載
比如 npm i yarn -g 安裝成功后,我再執(zhí)行 yarn -v 報(bào)錯(cuò)如下
yarn : 無法加載文件 xxxx\node_global\yarn.ps1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本。有關(guān)詳細(xì)信息,請(qǐng)參閱 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
原因是沒有權(quán)限
解決方案:
- 先打開
powershell,找不到的話可以通過vscode打開powershell - 然后執(zhí)行
get-ExecutionPolicy命令,是查看權(quán)限的 - 輸出結(jié)果為
Restricted,說明權(quán)限是禁用的 - 接著執(zhí)行
set-ExecutionPolicy -Scope CurrentUser命令 - 會(huì)提示輸入,然后輸入
remotesigned回車,設(shè)置成可用的意思 - 再執(zhí)行
get-ExecutionPolicy命令,結(jié)果為RemoteSigned表示更改成功,然后就可以正常加載了
到這,nvm、node、npm 安裝到正常使用應(yīng)該都沒啥問題了,如有遺漏,歡迎評(píng)論區(qū)留言指出
結(jié)語
如果本文對(duì)你有一點(diǎn)點(diǎn)幫助,點(diǎn)個(gè)贊支持一下吧,你的每一個(gè)【贊】都是我創(chuàng)作的最大動(dòng)力 _
更多前端文章,或者加入前端交流群,歡迎關(guān)注公眾號(hào)【前端快樂多】,大家一起共同交流和進(jìn)步呀