發表文章

目前顯示的是 8月, 2026的文章

[Node.js] 解決 nvm for Windows(nvm4w)「nvm use」切換版本沒反應的問題

問題描述 在 Windows 上使用 nvm for Windows(nvm4w) 管理多個 Node.js 版本時,執行切換版本的指令: nvm use 20.20.2 指令執行後 沒有任何反應、也不會報錯 ,但用 node -v 確認時,版本號卻完全沒有改變,實際上還是停留在切換前的版本。反覆重試、重開終端機都沒用。 原因分析 nvm4w 管理多版本 Node.js 的方式,是在一個固定路徑(預設為 C:\nvm4w\nodejs ) 建立一個 目錄連結(junction) ,指向實際安裝的某個版本資料夾,例如 ...\nvm\v20.20.2 。 這條連結才是系統 PATH 實際指向的位置,所以只要連結指到哪個版本, node -v 就會回報哪個版本。 問題就出在這裡: nvm use 內部理應要先移除舊的 junction、再建立新的 junction 指向目標版本,但實際測試下來這個「移除舊連結 → 重建新連結」的動作偶爾會失效,導致連結沒有被更新——指令本身不報錯,版本卻沒有真正切換。 解決辦法:手動控制切換 既然問題出在 nvm use 內部重建連結的邏輯不可靠,那就繞過它,改成自己寫一支批次檔,直接用 rmdir 刪掉舊 junction,再用 mklink /J 重新建立一次,確保連結一定會指向正確版本。 把下面這支腳本存成 %USERPROFILE%\.local\bin\nvmuse.cmd ( %USERPROFILE% 是 Windows 的環境變數,會自動代入目前登入的使用者資料夾路徑,不需要自己改成固定的使用者名稱): @echo off setlocal enabledelayedexpansion set "NVM_ROOT=%USERPROFILE%\AppData\Local\nvm" set "NVM_LINK=C:\nvm4w\nodejs" if "%~1"=="" ( echo Usag...