问题或动机
Windows 用戶如果使用 nvm-windows 管理 Node.js,Qclaw 目前無法偵測到他們的 Node。
原因在 node-subprocess-runtime.ts 中,當 platform === 'win32' 時,nvm 偵測邏輯直接回傳 null,
完全跳過了 nvm-windows 的路徑掃描。
這導致使用 nvm-windows 的 Windows 用戶在環境檢測階段看到「未偵測到 Node.js」,
即使他們已透過 nvm-windows 安裝了符合版本要求的 Node。
建议方案
新增 nvm-windows 專用的偵測邏輯:
-
新增 detectNvmWindowsDir()
- 優先讀取 NVM_HOME 環境變數
- 回退到 %APPDATA%\nvm 預設路徑
-
新增 listInstalledNvmWindowsNodeExePaths()
- 掃描 nvm-windows 目錄下的版本資料夾(如 v22.17.1\node.exe)
- 依版本號由高到低排序
-
在 resolveQualifiedNodeRuntime() 中,
當 platform === 'win32' 時呼叫上述函式,取代原本的 null
-
修正 resolveNodeInstallStrategy() 的路徑比對,
將 Windows 反斜線正規化後再比較,確保 nvm-windows 路徑被正確識別為 nvm 策略
改動範圍侷限於 Windows 平台,不影響 macOS/Linux。
替代方案
No response
补充信息
nvm-windows 預設安裝路徑:%APPDATA%\nvm
版本目錄結構:%APPDATA%\nvm\v22.17.1\node.exe
我已在本機完成實作並驗證:
- npm run typecheck ✅
- 新增 9 個測試全部通過 ✅
- 無新增的測試失敗
分支:feat/nvm-windows-detection
Fork:https://github.com/JasonYang318/Qclaw
问题或动机
Windows 用戶如果使用 nvm-windows 管理 Node.js,Qclaw 目前無法偵測到他們的 Node。
原因在 node-subprocess-runtime.ts 中,當 platform === 'win32' 時,nvm 偵測邏輯直接回傳 null,
完全跳過了 nvm-windows 的路徑掃描。
這導致使用 nvm-windows 的 Windows 用戶在環境檢測階段看到「未偵測到 Node.js」,
即使他們已透過 nvm-windows 安裝了符合版本要求的 Node。
建议方案
新增 nvm-windows 專用的偵測邏輯:
新增 detectNvmWindowsDir()
新增 listInstalledNvmWindowsNodeExePaths()
在 resolveQualifiedNodeRuntime() 中,
當 platform === 'win32' 時呼叫上述函式,取代原本的 null
修正 resolveNodeInstallStrategy() 的路徑比對,
將 Windows 反斜線正規化後再比較,確保 nvm-windows 路徑被正確識別為 nvm 策略
改動範圍侷限於 Windows 平台,不影響 macOS/Linux。
替代方案
No response
补充信息
nvm-windows 預設安裝路徑:%APPDATA%\nvm
版本目錄結構:%APPDATA%\nvm\v22.17.1\node.exe
我已在本機完成實作並驗證:
分支:feat/nvm-windows-detection
Fork:https://github.com/JasonYang318/Qclaw