快速修复
# 一键:nvm 装 22 并切换后重装
nvm install 22 && nvm use 22 && npm install -g @musistudio/claude-code-router
你会遇到什么
npm install -g @musistudio/claude-code-router 报 EBADENGINE,提示 engine node 不满足要求。不是网络问题、也不是包坏了——包 engines 要求 Node 20 || >=22,你系统的 Node 太旧(18/19/21 都不满足)。
本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。
为什么会这样
claude-code-router 声明了 engines 字段(Node 20 || >=22),npm 安装时核对当前 Node 版本,不满足直接报 EBADENGINE 拒绝安装。多 Node 环境(nvm / Windows / WSL 混用)下尤其容易踩:你以为在用新版,实际生效的是旧版。
实测环境:本环境 Node v22.22.1,安装成功(2026-08-28 闭环日志首行 node: v22.22.1)。
engines 是包作者声明的运行环境契约:npm 安装时读取该字段并和当前 Node 版本比对,不满足就拒绝(EBADENGINE)。这本身是保护——避免装上一个"能装但跑不动"的包。多版本环境的坑在另一层:nvm use 22 只切换 nvm 自己管理的版本,而 shell 实际执行的是 PATH 里第一个命中的 node。
常见翻车:装了 nvm 的 node 22,但 PATH 里系统 node 18 排在前面,nvm use 之后 node --version 还是 18。所以排查顺序固定:先 which node 看谁在生效,再谈升级。
一步步来
1. 确认当前生效版本 — 必做
node --version && which node
看 which node 指向哪——多环境混用时经常 nvm use 22 了但 PATH 里还是旧的。
2. 装新版并切换 — 必做
nvm install 22 && nvm use 22
(或 nvm install 20,满足 20 || >=22 即可。)
3. 重试安装 — 必做
npm install -g @musistudio/claude-code-router
不再报 EBADENGINE 即成功。
怎么确认修好了
ccr --version
能输出版本号即成功(实测:Node v22.22.1 下安装成功,exit=0)。
其它环境的表现
| 环境 | 说明 |
|---|---|
| Node 18/19/21 | 不满足 engines,必须升 20 或 22 |
| nvm 多版本 | nvm use 22 后确认 which node |
| Windows/WSL 混用 | 两侧各装各的,别指望 Windows node 服务 WSL |
| CI | 固定 Node 22 镜像 |
症状
npm install -g @musistudio/claude-code-router 报 EBADENGINE,提示 engine node 不满足要求。
原因
包 engines 要求 Node 20 || >=22;系统 Node 过旧(18/19/21 均不满足)。
解法
- 用 nvm 装新版并切换:
nvm install 22 && nvm use 22(或nvm install 20)。 - 多 Node 环境(nvm/Windows/WSL 混用)先确认生效版本:
node --version、which node。 - 满足版本后重试安装。
验证证据
- 网页案例:CSDN(2026-03,EBADENGINE 场景)。
- 本市场实测:本环境 Node v22.22.1,安装成功(首行 node: v22.22.1)。
适用工具 (1)
本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。
claude-code-router来源与证据
← 网关与路由 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡