fix: Bun build failes in docker with "Export 'toNodeHandler' not found" when using Nuxt Devtools alpha.9 and @nuxt/image and special tsconfig
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 3.3k
- Forks
- 214
- Avg merge
- 13h 22m
- Merged PRs (30d)
- 18
Description
🐛 The bug
Bug/Error:
I found a very specific interaction bug in @nuxt/devtools Version 4.0.0-alpha.8 and 4.0.0-alpha.9 (it doesn't happen in 4.0.0-alpha.7). This is quite an edge case.
The docker build fails at bun run build with the error:
ERROR Export named 'toNodeHandler' not found in module '/app/node_modules/h3/dist/index.cjs'.
at <parse> (:0)
at processTicksAndRejections (native:7:39)
error: script "build" exited with code 1
🛠️ To reproduce
https://github.com/DragonFire7/NuxtDevToolsMinimal
🌈 Expected behavior
Minimal reproduction:
I built a minimal reproduction here: https://github.com/DragonFire7/NuxtDevToolsMinimal
- Clone the repository.
- Run
docker build --no-cache . - The build crashes at the
bun run buildstep.
Expected bahavior:
No errors when running the docker build
ℹ️ Additional context
Description/Details:
The bug happens when building with Docker and Bun. It does not happen locally on my Windows machine.
It only occurs when all of the following criteria are met:
package.json:@nuxt/imageand@nuxt/devtools(with one of the mentioned versions) are in thedevDependencies. Thebuildandpostinstallscripts must also be present.nuxt.config.ts: A basic config utilizing the Nitro preset for Bun.tsconfig.json: This is why I call it an edge case. It only happens when the project came from Nuxt 3 and still uses the legacy Nuxt 3 tsconfig format. When updating my project's config to the new Nuxt 4 tsconfig format, everything works perfectly again.Dockerfile: The Dockerfile is pretty standard and only shows the building stage, since the error already occurs there.
What I found through trial and error:
- Without the
postinstallscript, the types don't seem to be generated while building, thus thetsconfig.jsondoesn't have any effect and the build succeeds. - Without
@nuxt/image, no error occurs. The issue seems to be introduced by an interaction between the two modules during the build process. - Switching the base image from
oven/bun:1-alpinetooven/bun:1-slimoroven/bun:1didn't have any effect.
Since this is very much an edge case tied to an outdated tsconfig.json, it is low priority in my opinion. However, I wanted to report it in case it helps others searching for a solution
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Clone the linked NuxtDevToolsMinimal reproduction and run docker build --no-cache . to confirm the failure at bun run build. Compare the listed @nuxt/devtools versions and inspect package.json, nuxt.config.ts, the legacy tsconfig.json, Dockerfile, and postinstall setup. Done means the Docker build completes without the toNodeHandler export error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- bun, docker, nuxtjs, typescript
- Domain
- build-system, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100