DSH Toolbox

EBADENGINE

EBADENGINE means the Node running npm is outside the range the package declares; for DSH that floor is Node.js 24.9.0.

npm often continues after this warning, which is why the failure shows up later as a syntax error.

The error, verbatim

npm prints EBADENGINE Unsupported engine with the required range and your current version.

Why it happens, most likely first

Node was installed long enough ago that the project floor moved past it.

A per-project .nvmrc or a shell default pins an older version than the global one, so npm install -g runs under the wrong Node.

A container image tagged node:lts from before the floor moved.

The fix

Check what you are on, then install the current LTS and re-install DSH.

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

If that does not settle it

If node --version already shows 24.9.0 or newer, the shell is resolving a different npm: compare which npm with which node.

Inside a container, rebuild the image with node:24-slim or newer rather than mutating the running one.

Common questions

Does EBADENGINE block the install?

Not by default. npm warns and proceeds; the failure surfaces at boot, which is why the two look unrelated.

Is Node 22 close enough?

No. The floor is 24.9.0; 22 fails at start-up with a syntax error rather than a version message.