Skip to content

Commit 99349f9

Browse files
committed
fix: prevent router from being code-split
1 parent 2c2bf64 commit 99349f9

File tree

2 files changed

+28
-27
lines changed

2 files changed

+28
-27
lines changed

.changeset/hungry-spies-train.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@marko/run-adapter-node": patch
3+
---
4+
5+
Prevent router code from being code-split

packages/adapters/node/src/ensure-runtime.ts

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import "@marko/run/router";
2+
13
import type { IncomingMessage } from "http";
24
import type { Connect, ViteDevServer } from "vite";
35

@@ -12,41 +14,35 @@ declare global {
1214
| undefined;
1315
}
1416

15-
// Prevent importing the router and subsequent runtime in dev mode without going through Vite's ssrLoadModule
16-
if (process.env.NODE_ENV && process.env.NODE_ENV !== "development") {
17-
import("@marko/run/router");
18-
}
19-
2017
export default globalThis.__marko_run_middleware__ ??=
2118
process.env.NODE_ENV && process.env.NODE_ENV !== "development"
2219
? (factory) => factory
2320
: (() => {
24-
let devServer: ViteDevServer | undefined;
21+
let devServer: ViteDevServer;
2522
let errorMiddleware: Connect.ErrorHandleFunction | undefined;
23+
let devMiddleware: NodeMiddleware = async (req, res, next) => {
24+
await initPromise;
25+
devMiddleware(req, res, next);
26+
};
2627

2728
const seenReqs = new WeakSet<IncomingMessage>();
28-
const devServerPromise = import("@marko/run/adapter").then(
29-
async (mod) => {
30-
devServer = await mod.createViteDevServer(
31-
globalThis.__marko_run_vite_config__,
32-
);
33-
errorMiddleware = mod.createErrorMiddleware(devServer);
29+
const initPromise = (async () => {
30+
const adapter = await import("@marko/run/adapter");
31+
devServer = await adapter.createViteDevServer(
32+
globalThis.__marko_run_vite_config__,
33+
);
3434

35-
void devServer!.ssrLoadModule("@marko/run/router").catch(() => {});
36-
devMiddleware = (req, res, next) => {
37-
if (seenReqs.has(req)) {
38-
return next?.();
39-
}
40-
seenReqs.add(req);
41-
devServer!.middlewares(req, res, next);
42-
};
43-
},
44-
);
35+
await devServer.ssrLoadModule("@marko/run/router");
4536

46-
let devMiddleware: NodeMiddleware = async (req, res, next) => {
47-
await devServerPromise;
48-
devMiddleware(req, res, next);
49-
};
37+
errorMiddleware = adapter.createErrorMiddleware(devServer);
38+
devMiddleware = (req, res, next) => {
39+
if (seenReqs.has(req)) {
40+
return next?.();
41+
}
42+
seenReqs.add(req);
43+
devServer.middlewares(req, res, next);
44+
};
45+
})();
5046

5147
return (factory) =>
5248
(...args) => {
@@ -69,7 +65,7 @@ export default globalThis.__marko_run_middleware__ ??=
6965
}
7066

7167
try {
72-
await devServer!.ssrLoadModule("@marko/run/router");
68+
await devServer.ssrLoadModule("@marko/run/router");
7369
} catch (err) {
7470
handleError(err as Error);
7571
return;

0 commit comments

Comments
 (0)