网关与路由 · 收录于 2026-08-29 · 适用 1 工具 ✓ 实测验证

WSL 里 node: not found(npm 来自 Windows 侧)

已验证 2026-08-29WSL 里 node: not found——npm 来自 Windows 侧,WSL 内用 nvm 装原生 Node 22 并重装全局包。

快速修复

# 一键:WSL 内装原生 Node(nvm)并重装全局包
nvm install 22 && nvm use 22 && npm install -g @musistudio/claude-code-router

你会遇到什么

WSL 里执行 ccr 或其它 npm 全局命令报 node: not found,但同一命令在 Windows 侧正常。原因是包是 Windows 版安装的(脚本 shebang 指向 Windows node),或 PATH 里 Windows 路径优先于 WSL 原生路径——两侧的 Node 是两套东西,别混用。

本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。

为什么会这样

WSL 和 Windows 各有自己的 node/npm 全局目录。如果在 Windows 侧 npm install -g,生成的命令脚本 shebang 指向 Windows 的 node.exe;在 WSL 里执行时找不到对应解释器就报 node: not found。反过来,PATH 里 Windows 路径在前时,WSL 里的 node 会调到 Windows 版,行为怪异。

npm 全局命令的真实形态是一个 shell 脚本(不是二进制):npm install -g 时,npm 在全局 bin 目录生成一个可执行脚本,脚本第一行 shebang 写死了解释器路径(如 #!/usr/bin/env node 或直接指向 node.exe 的绝对路径)。

安装时写的是当时那台机器的解释器:在 Windows 侧安装,shebang 指向 Windows 的 node.exe——WSL 里执行这个脚本时,WSL 环境里没有 node.exe(那是 Windows 的 PE 可执行文件),于是 node: not found。

反过来,WSL 的 PATH 里如果 Windows 路径(/mnt/c/...)排在前面,node 会解析到 Windows 版 node.exe——WSL 能执行它(通过 interop),但行为、路径、性能都跟原生版不一样。这就是“两侧是两套东西,别混用”的机制含义。

修复也因此固定:在 WSL 侧装原生 Node(nvm/apt),把全局包重装到 WSL 侧 npm 的 bin 目录,让 shebang 指向 WSL 的解释器;验证用 which node 看解析路径。

实测环境:WSL 原生 Node v22.22.1 + npm 全局安装链路可用(,2026-08-28)。

一步步来

1. WSL 内装原生 Node — 必做

nvm install 22 && nvm use 22

(或 apt 装 nodejs/npm。)确保 /usr/bin 或 nvm 路径在 PATH 中优先于 Windows 路径。

2. 验证生效版本 — 必做

which node && node --version

which node 指向 WSL 内路径(/usr/bin 或 ~/.nvm)才是对的。

3. 重装到 WSL 侧全局 — 必做

npm install -g @musistudio/claude-code-router

不要混用两侧 npm 全局目录;旧命令脚本残留的话 rm $(which ccr) 清掉 Windows 侧副本。

怎么确认修好了

which ccr && ccr --version

WSL 内命令可执行即成功(实测:WSL 原生 Node + npm 全局链路可用)。

其它环境的表现

环境说明
WSL 执行 Windows 装的包node: not found,重装到 WSL 侧
PATH 混用确保 WSL 路径优先
两侧全局目录各装各的,不共享
CI/容器单侧环境,无此问题

症状

WSL 里执行 ccr 或 npm 全局命令报 node: not found;同一命令在 Windows 侧正常。

原因

npm 包是 Windows 版安装的(脚本 shebang 指向 Windows node),或 PATH 中 Windows 路径优先于 WSL 原生路径。

解法

  1. WSL 内装原生 Node(nvm 或 apt),确保 /usr/bin 在 PATH 中优先。
  2. 重开 shell 验证:which node、node --version。
  3. 不要混用两侧 npm 全局目录(重装到 WSL 侧全局即可)。
验证证据
  • 网页案例:CSDN(2026-03,WSL node: not found 场景)。
  • 本市场实测:WSL 原生 Node v22.22.1 + npm 全局安装链路可用。

适用工具 (1)

本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。

claude-code-router

来源与证据

收录 验证 ✓ 实测验证适用 1 工具
方案含本地实测或来源可复核的解法;未实测项已在文中如实标注。

← 网关与路由 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡