在工作中我們經常會遇到同時并行開發多個項目的情況,如果有兩個項目所依賴的node版本不一致,就會讓我們很苦惱。比如項目A是多年前的老項目所依賴的node版本為14以下,項目B是我們剛啟動的新項目,所依賴的node版本為16以上,這時候我們怎么在同一個時期并行開發這兩個項目呢?是來回卸載安裝node嗎?
這種情況下,對于維護多個版本的node將會是一件非常麻煩的事情,nvm就是為解決這個問題而產生的,他可以方便的在同一臺設備上進行多個node版本之間切換。
nvm 的下載安裝和使用
- window系統下載nvm-setup.zip安裝包
nvm下載
- nvm-setup.zip:安裝版,推薦使用,下一步式傻瓜安裝
- nvm-noinstall.zip:綠色免安裝版,但使用時需進行配置環境變量。
- nvm 安裝
如果電腦上之前已經單獨安裝了node,需要先卸載干凈,卸載方式見下方window 下完全卸載刪除 nodejs。然后解壓nvm-setup.zip安裝包,進入解壓的文件夾,雙擊exe后綴文件根據提示進行安裝。安裝過程中需要選擇nvm和nodejs的安裝路徑,一般默認即可。
nvm安裝路徑
nodejs安裝路徑
安裝完畢后輸入命令 nvm -v
查看版本,安裝成功則顯示版本號和列出了各種使用命令。
查看nvm版本
設置setting.txt(可忽略不設置)
在 nvm 的安裝路徑下,找到 settings.txt,設置node_mirro與npm_mirror為國內鏡像地址,防止下載速度過慢。
settings.txt位置
在后面添加這兩行代碼
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/
- 使用
-
列出所有可以安裝的Node版本號
nvm list available
image.png -
安裝指定版本的node,
nvm install x.x.x
image.png -
使用特定版本的node,
nvm use x.x.x
,這里可能無法執行成功,會有一個報錯,見下方nvm use報錯exit status 1解決方法
image.png -
列出所有已經安裝的Node版本
nvm ls
,這里當前正在使用中的版本前面會有一個 * 號標注
image.png -
按照以上步驟設置完成后,我們輸入
node -v
,可以看到node的版本好成功顯示出來,代表我們安裝成功了
node -v
下面列出 nvm 的一些常用命令
nvm off // 禁用node.js版本管理(不卸載任何東西)
nvm on // 啟用node.js版本管理
nvm install <version> // 安裝node.js的命名 version是版本號 例如:nvm install 8.12.0
nvm uninstall <version> // 卸載node.js是的命令,卸載指定版本的nodejs,當安裝失敗時卸載使用
nvm ls // 顯示所有安裝的node.js版本
nvm list available // 顯示可以安裝的所有node.js的版本
nvm use <version> // 切換到使用指定的nodejs版本
nvm -v // 顯示nvm版本
nvm install stable // 安裝最新穩定版
nvm current // 顯示當前使用中的nvm版本
window 下完全卸載刪除 nodejs
- 從卸載程序卸載程序和功能。
- 重新啟動(或者您可能會從任務管理器中殺死所有與節點相關的進程)。
- 尋找這些文件夾并刪除它們(及其內容)(如果還有)。根據您安裝的版本,UAC設置和CPU架構,這些可能或可能不存在:
C:\Program Files (x86)\Nodejs
C:\Program Files\Nodejs
C:\Users{User}\AppData\Roaming\npm(或%appdata%\npm)
C:\Users{User}\AppData\Roaming\npm-cache(或%appdata%\npm-cache) - 檢查您的%PATH%環境變量以確保沒有引用Nodejs或npm存在。
- 如果仍然沒有卸載,請where node在命令提示符下鍵入,您將看到它所在的位置 - 刪除(也可能是父目錄)。
- 重新啟動,很好的措施。
nvm use報錯exit status 1解決方法
nvm use 版本報錯,出現exit status 1后面跟一堆亂碼的原因是因為無權限。
打開c盤C:\Windows\System32找到 cmd.exe
,以管理員身份打開后,再次使用 nvm use x.x.x
可實現成功切換。