mysterious-crowd-43405
03/31/2026, 9:16 AMdocker compose up --build fails in containers/app/Dockerfile at RUN npm ci with:
npm error Exit handler never called!
What we found:
- containers/app/Dockerfile uses node:25.2-trixie-slim
- frontend/package.json still declares:
- volta.node = 22.12.0
- packageManager = npm@10.5.0
- engines.node >= 22.12.0
In our environment, switching the frontend builder image back to node:22.12.0-trixie-slim fixes the build.
This looks like a toolchain/version drift in the official 1.5.0 release rather than a downstream customization issue.
Repro:
1. checkout official 1.5.0
2. build containers/app/Dockerfile
3. fail at RUN npm ci
Has anyone else seen this, and would you want this reported as a GitHub issue / PR?gentle-apple-32922
03/31/2026, 8:51 PMnutritious-balloon-65098
03/31/2026, 8:52 PMnutritious-balloon-65098
03/31/2026, 8:56 PMRUN npm ci / Exit handler never called! failure.
- Related history in OpenHands: I found the Dockerfile Node bump PRs, especially PR #11756, which changed the app builder image from Node 24.8 to 25.2, and later Dependabot bumps to 25.8.
- Upstream npm ecosystem: Yes, the same symptom has been reported before in npm itself, including:
- npm/cli#7666
- npm/cli#7657
- npm/cli#8407
- Do they need more details before filing?
- No, not really. Their existing repro is already strong enough:
- official 1.5.0
- docker compose up --build
- fails in containers/app/Dockerfile at RUN npm ci
- pinning builder image to node:22.12.0-trixie-slim fixes it
- Helpful but optional extras:
- host architecture (amd64 vs arm64)
- Docker version
- npm debug log path/output
- whether --no-cache changes behavior
- Recommended fix
- For the user right now: pin the frontend builder image back to Node 22.12.0, e.g.:
dockerfile
FROM node:22.12.0-trixie-slim AS frontend-builder
- For OpenHands upstream: align containers/app/Dockerfile with the frontend’s declared toolchain:
- frontend/package.json declares:
- volta.node = 22.12.0
- packageManager = npm@10.5.0
- engines.node >=22.12.0
- CI also largely uses Node 22
- So this looks like toolchain/version drift in OpenHands, and the cleanest upstream fix is to revert the Docker builder to Node 22 LTS. Optionally, they could also pin npm explicitly for full reproducibility.
Bottom line:
This looks like a credible OpenHands bug worth reporting. I’d recommend they open an issue, and likely a small PR too, pinning the Docker builder stage back to Node 22.12.0.gentle-apple-32922
03/31/2026, 9:09 PMnutritious-balloon-65098
03/31/2026, 9:09 PMnutritious-balloon-65098
03/31/2026, 9:12 PMcontainers/app/Dockerfile → RUN npm ci
- Node/toolchain drift between Dockerfile (Node 25) and frontend metadata/CI (Node 22)
- workaround of switching to node:22.12.0-trixie-slim
- related upstream npm issues
- suggested upstream fix
- AI disclosure note
- [x] I was not able to attach a direct Slack permalink/author from the available tooling, so the attribution is generic rather than linked to a specific Slack message.
Conciseness check:
- [x] No code or repository files were changed.
- [x] No extraneous changes were made; the only new external artifact was the GitHub issue itself.
If you want, the only useful next step would be to provide a Slack permalink and/or the reporter’s preferred attribution so the issue can be updated with a more exact reference.