Skip to content

feat: detect Node.js installed via nvm-windows on Windows #46

@JasonYang318

Description

@JasonYang318

问题或动机

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 專用的偵測邏輯:

  1. 新增 detectNvmWindowsDir()

    • 優先讀取 NVM_HOME 環境變數
    • 回退到 %APPDATA%\nvm 預設路徑
  2. 新增 listInstalledNvmWindowsNodeExePaths()

    • 掃描 nvm-windows 目錄下的版本資料夾(如 v22.17.1\node.exe)
    • 依版本號由高到低排序
  3. 在 resolveQualifiedNodeRuntime() 中,
    當 platform === 'win32' 時呼叫上述函式,取代原本的 null

  4. 修正 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions