Skip to content

Commit 943aa3b

Browse files
authored
fix(bundler-vite): before & after middlewares not working bug (umijs#141)
1 parent 6a6f859 commit 943aa3b

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

packages/bundler-vite/src/server/server.ts

+23-8
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,38 @@ export async function createServer(opts: IOpts) {
5050
server: { middlewareMode: 'html' },
5151
});
5252

53+
// before middlewares
54+
opts.beforeMiddlewares?.forEach((m) => app.use(m));
55+
56+
// after middlewares, insert before vite spaFallbackMiddleware
57+
// refer: https://github.com/vitejs/vite/blob/2c586165d7bc4b60f8bcf1f3b462b97a72cce58c/packages/vite/src/node/server/index.ts#L508
58+
if (opts.afterMiddlewares?.length) {
59+
vite.middlewares.stack.some((s, i) => {
60+
if ((s.handle as Function).name === 'viteSpaFallbackMiddleware') {
61+
const afterStacks: typeof vite.middlewares.stack =
62+
opts.afterMiddlewares!.map((handle) => ({
63+
route: '',
64+
handle,
65+
}));
66+
67+
vite.middlewares.stack.splice(i, 0, ...afterStacks);
68+
69+
return true;
70+
}
71+
72+
return false;
73+
});
74+
}
75+
5376
// use vite via middleware way
5477
app.use(vite.middlewares);
5578

56-
// before middlewares
57-
(opts.beforeMiddlewares || []).forEach((m) => app.use(m));
58-
5979
// writeToDisk(?)
6080
// mock
6181
// prerender
6282
// bundless
6383

64-
// after middlewares
65-
console.log('test', opts.afterMiddlewares);
66-
(opts.afterMiddlewares || []).forEach((m) => app.use(m));
67-
6884
const server = http.createServer(app);
69-
7085
const port = process.env.PORT || 8000;
7186

7287
server.listen(port, async () => {

0 commit comments

Comments
 (0)