【筆記】Windows 安裝 NVM 後無法正常 nvm use 和 use 完無法辨識 ‘npm’ 詞彙之解法

NVM 是 Node.js 的管本管理工具,可以快速切換電腦中 Node.js 版本。本文會向大家簡單分享 Windows 安裝 MVM 的方法,以及安裝後無法正常使用 nvm use 和 use 完無法辨識 ‘npm’ 詞彙之解法。

NVM Download for Windows

NVM 下載頁面

選擇 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

可先照以下步驟檢查:

  1. 前往 NVM 的安裝路徑(預設路徑 C:\Users\<your user name>\AppData\Roaming\nvm),這邊應該會有一個以上的 Node.js 版號的資料夾(nvm ls 列出的版號應該都會出現,如下圖)
  2. 選擇你現在正在 nvm use 的版號,以我這邊的例子就是進去 v10.16.0 的資料夾。
  3. 進去後發現其 node_modules 資料夾也是空的。
NVM 安裝路徑

這就是無法辨識 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-vnpm -v 檢查是否正常運作:

> node -v
v10.16.0

> npm -v
6.14.9

如果都正常出現版號就代表 OK 囉。


參考文章

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments