NVM 是 Node.js 的管本管理工具,可以快速切換電腦中 Node.js 版本。本文會向大家簡單分享 Windows 安裝 MVM 的方法,以及安裝後無法正常使用 nvm use 和 use 完無法辨識 ‘npm’ 詞彙之解法。
NVM Download for Windows
選擇 nvm-setup.exe
即可下載安裝。
常用 NVM 指令
- nvm install <version>:安裝特定版本的 Node.js
- nvm ls:列出電腦中已安裝的 Node.js 版本
- nvm use <version>:於當前命令列套用特定版本的 Node.js
問題 1:無法正常 nvm use 切換 Node.js 版本
以我的電腦為例,已安裝的 Node.js 版本有 14.15.2 和 10.16.0:
> nvm ls
* 14.15.2 (Currently using 64-bit executable)
10.16.0
可看出目前 terminal 所使用的 Node.js 版本是 14.15.2,如果我要切換成另一個 10.16.0,照理來說以下指令應該要可以正常切換:
> nvm use 10
> nvm use 10.16.0
> nvm use v10
node vv10.16.0 (64-bit) is not installed or cannot be found
但卻出現了 10.16.0 未被安裝或找不到的錯誤訊息。
解決方法:完整輸入版號 v10.16.0
> nvm use v10.16.0
Now using node v10.16.0 (64-bit)
其實感覺是 nvm 的一個 bug,但在他未修正前可以先用這方法試試看。
📣 提醒 terminal 需使用系統管理員權限開啟,否則可能會出現以下錯誤:
> nvm use v10.16.0
exit status 5: �s���Q�ڡC
exit status 1: ���ɮפw�s�b�ɡA�L�k�إ߸��ɮסC
問題 2:nvm use 後無法辨識 ‘npm’ 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱
當 nvm use v10.16.0
成功後,照理來說就可以使用這個版本的 Node.js 了,但是當我在 VS Code terminal 輸入 npm 的相關指令竟然會出現以下錯誤訊息:
> npm -v
npm : 無法辨識 'npm' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。請檢查名稱拼字是否正確,如果包含路徑的話,請確認路徑是否正確,然後再試一次。
位於 線路:1 字元:1
+ npm -v
+ ~~~
+ CategoryInfo : ObjectNotFound: (npm:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
可先照以下步驟檢查:
- 前往 NVM 的安裝路徑(預設路徑
C:\Users\<your user name>\AppData\Roaming\nvm
),這邊應該會有一個以上的 Node.js 版號的資料夾(nvm ls
列出的版號應該都會出現,如下圖) - 選擇你現在正在
nvm use
的版號,以我這邊的例子就是進去v10.16.0
的資料夾。 - 進去後發現其
node_modules
資料夾也是空的。
這就是無法辨識 npm 的原因,因為下了 nvm use
後,nvm 會將這裡的對應版本的 Node.js 資料夾內容複製到 C:\Program Files\nodejs
中,藉此達成切換 Node.js 的目的;以我這邊的例子,若 C:\Users\<your user name>\AppData\Roaming\nvm\v10.16.0\node_modules
是空的話,那 terminal 自然會找不到 npm(前提是 path 有正確設定)。
而出現這問題的原因很可能是 nvm 是在已經安裝好 Node.js 後才安裝的,亦即 Node.js 若不是透過 nvm install
安裝的就有可能發生這個 bug。
解決方法:手動將對應的 Node.js 版本的內容複製到 NVM 資料夾底下對應的 Node.js 版號資料夾
以我的例子,我從 https://nodejs.org/download/release/v10.16.0/ 下載 node-v10.16.0-win-x64.zip
,解壓縮後,將其中 node_modules/npm
的內容複製到 NVM 安裝路徑下對應 Node.js 下的 node_modules 資料夾中即可。
接下來應該就大功告成了,可以再次使用 nvm use
切換不同版本的 Node.js,然後再回到 VS Code terminal 中使用 node-v
和 npm -v
檢查是否正常運作:
> node -v
v10.16.0
> npm -v
6.14.9
如果都正常出現版號就代表 OK 囉。
參考文章