From 1c9e985de6f23233cbb79e749c05ace186e52b04 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Mon, 15 Jan 2024 10:56:34 +0200 Subject: [PATCH] fix: Remove fallback middleware also after Vite restart The existing hacky way of removing the middleware has two issues: 1. It removes it AFTER the first request to a non-existing file so the first request for a non-existing resources index.html and subsequent requests return 404 2. It does not work with Vite 4.0.5+ after restart, see https://github.com/vitejs/vite/issues/15589 --- .../src/main/resources/vite.generated.ts | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/flow-server/src/main/resources/vite.generated.ts b/flow-server/src/main/resources/vite.generated.ts index 32d7818a3e3..21fff3381ae 100644 --- a/flow-server/src/main/resources/vite.generated.ts +++ b/flow-server/src/main/resources/vite.generated.ts @@ -644,8 +644,6 @@ function runWatchDog(watchDogPort, watchDogHost) { client.connect(watchDogPort, watchDogHost || 'localhost'); } -let spaMiddlewareForceRemoved = false; - const allowedFrontendFolders = [frontendFolder, nodeModulesFolder]; function showRecompileReason(): PluginOption { @@ -773,18 +771,14 @@ export const vaadinConfig: UserConfigFn = (env) => { }), { name: 'vaadin:force-remove-html-middleware', - transformIndexHtml: { - order: 'pre', - handler(_html, { server }) { - if (server && !spaMiddlewareForceRemoved) { - server.middlewares.stack = server.middlewares.stack.filter((mw) => { - const handleName = '' + mw.handle; - return !handleName.includes('viteHtmlFallbackMiddleware'); - }); - spaMiddlewareForceRemoved = true; - } - } - } + configureServer(server) { + return () => { + server.middlewares.stack = server.middlewares.stack.filter((mw) => { + const handleName = `${mw.handle}`; + return !handleName.includes('viteHtmlFallbackMiddleware'); + }); + }; + }, }, hasExportedWebComponents && { name: 'vaadin:inject-entrypoints-to-web-component-html',