🐛 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 build step.
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/image and @nuxt/devtools (with one of the mentioned versions) are in the devDependencies. The build and postinstall scripts 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
postinstall script, the types don't seem to be generated while building, thus the tsconfig.json doesn'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-alpine to oven/bun:1-slim or oven/bun:1 didn'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
🐛 The bug
Bug/Error:
I found a very specific interaction bug in
@nuxt/devtoolsVersion4.0.0-alpha.8and4.0.0-alpha.9(it doesn't happen in4.0.0-alpha.7). This is quite an edge case.The docker build fails at
bun run buildwith the error:🛠️ To reproduce
https://github.com/DragonFire7/NuxtDevToolsMinimal
🌈 Expected behavior
Minimal reproduction:
I built a minimal reproduction here:
https://github.com/DragonFire7/NuxtDevToolsMinimaldocker build --no-cache .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:
postinstallscript, the types don't seem to be generated while building, thus thetsconfig.jsondoesn't have any effect and the build succeeds.@nuxt/image, no error occurs. The issue seems to be introduced by an interaction between the two modules during the build process.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