DSH Toolbox

EBADENGINE

EBADENGINE 的意思是跑 npm 的那个 Node 不在包声明的区间里;对 DSH 来说下限是 Node.js 24.9.0。

npm 常常只警告不中止,所以真正的失败会晚一步以语法错误出现。

报错原文

npm 打印 EBADENGINE Unsupported engine,同时给出要求的区间和你当前的版本。

为什么会这样,按概率排

Node 装得太久,项目的下限已经从它头上越过去了。

项目里的 .nvmrc 或 shell 默认版本钉了更老的 Node,于是 npm install -g 跑在错的 Node 上。

容器镜像是下限提高之前打的 node:lts。

修法

先看当前版本,再装当前 LTS,然后重装 DSH。

node --version
npm install -g @deepseek-ai/dsh@latest

这条没用就看下一步

node --version 已经是 24.9.0 以上,说明 shell 解析到了另一个 npm:对比 which npm 和 which node。

在容器里的话,用 node:24-slim 或更新重打镜像,别在运行中的容器里改。

常见问题

EBADENGINE 会挡住安装吗?

默认不会。npm 警告后继续,失败留到启动时才出现,所以两件事看起来没关系。

Node 22 差一点行不行?

不行。下限是 24.9.0,22 会在启动时报语法错误,而不是给版本提示。