diff --git a/.changeset/exclude-start-from-server-prebundling.md b/.changeset/exclude-start-from-server-prebundling.md new file mode 100644 index 000000000..b066f1581 --- /dev/null +++ b/.changeset/exclude-start-from-server-prebundling.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +Keep `@solidjs/start` out of server pre-bundling, so that server functions no longer fail with "invalid server function" in dev with plugins that pre-bundle server dependencies, such as the Cloudflare Vite plugin. diff --git a/packages/start/src/config/index.spec.ts b/packages/start/src/config/index.spec.ts index 933ed4da8..6c67d6971 100644 --- a/packages/start/src/config/index.spec.ts +++ b/packages/start/src/config/index.spec.ts @@ -107,6 +107,12 @@ describe("resolve conditions", () => { expect(ssr.resolve.conditions).not.toContain("node"); }); + it("keeps @solidjs/start out of the server's pre-bundled dependencies", async () => { + const { ssr } = await resolveEnvironments(); + + expect(ssr.optimizeDeps.exclude).toContain("@solidjs/start"); + }); + it("pre-bundles the dev overlay's dependencies in dev only", async () => { const dev = await resolveEnvironments("serve"); const build = await resolveEnvironments("build"); diff --git a/packages/start/src/config/index.ts b/packages/start/src/config/index.ts index 0883b7ff8..62ef1da0e 100644 --- a/packages/start/src/config/index.ts +++ b/packages/start/src/config/index.ts @@ -415,6 +415,9 @@ export function solidStart(options?: SolidStartOptions): Array { }, [VITE_ENVIRONMENTS.server]: { consumer: "server", + // Plugins that pre-bundle server dependencies, such as the Cloudflare Vite plugin, + // would otherwise load a second copy of the server function registry + optimizeDeps: { exclude: ["@solidjs/start"] }, build: { ssr: true, write: true,