QwikDev / QwikDev/astro

[🐞] Qwik SSR bundle steals Astro's build.serverEntry filename, breaking astro preview and @astrojs/node standalone runtime

Open
#289 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
287
Forks
24
Avg merge
14h 44m
Merged PRs (30d)
3

Description

Which component is affected?

Integration

Describe the bug

Summary

@qwik.dev/astro's SSR build emits its bundle using whatever filename is configured as Astro's build.serverEntry. Astro detects the collision and falls back to <configured-name-without-ext>2.mjs for its own handler. Both astro preview and @astrojs/node (standalone mode) read build.serverEntry to locate the handler, so they load the Qwik bundle instead, find no handler export, and crash.

There is no pure-config workaround: any value of build.serverEntry gets claimed by Qwik.

Versions

  • @qwik.dev/astro@1.0.2
  • @qwik.dev/core@2.0.0-beta.34
  • astro@6.3.1
  • @astrojs/node@10.1.0
  • Bun 1.3, macOS
Reproduction

https://stackblitz.com/~/github.com/NecroPrism4/rockypointnet-client

Steps to reproduce

Minimal astro.config.mjs:

import node from "@astrojs/node";
import qwik from "@qwik.dev/astro";
import { defineConfig } from "astro/config";

export default defineConfig({
  output: "server",
  adapter: node({ mode: "standalone" }),
  integrations: [qwik({ clientRouter: true })],
});

One Qwik component imported into an .astro page is enough.

bun run build
bun run preview      # astro preview --port 8080

Actual

[AstroUserError] The server entrypoint doesn't have a handler. Are you sure this is the right file?
  at createPreviewServer (node_modules/@astrojs/node/dist/preview.js:13:13)

bun ./dist/server/entry.mjs (the standalone production CMD) fails the same way — that file is Qwik's bundle, with only export { root as default }.

System Info
System:
    OS: macOS 14.6.1
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 1.39 GB / 32.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 24.14.0 - /Users/darien/.nvm/versions/node/v24.14.0/bin/node
    Yarn: 1.22.22 - /Users/darien/.nvm/versions/node/v24.14.0/bin/yarn
    npm: 11.9.0 - /Users/darien/.nvm/versions/node/v24.14.0/bin/npm
    pnpm: 10.33.0 - /Users/darien/.nvm/versions/node/v24.14.0/bin/pnpm
    bun: 1.3.10 - /Users/darien/.bun/bin/bun
  Browsers:
    Chrome: 147.0.7727.138
    Safari: 17.6
Additional Information

No response

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the minimal astro.config.mjs reproduction and run bun run build followed by bun run preview. Inspect the generated dist/server/entry.mjs alongside @astrojs/node/dist/preview.js to trace which server entry is loaded. Done means both Astro preview and the standalone bun ./dist/server/entry.mjs run without the missing-handler error while Qwik SSR still builds.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, typescript
Domain
backend, build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
44/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.