From ae7e360350c8bd72520295feb1c9cdc5cbbb0253 Mon Sep 17 00:00:00 2001 From: Artur Date: Mon, 22 Jan 2024 16:56:33 +0200 Subject: [PATCH] fix: Remove fallback middleware also after Vite restart (#18455) 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 Co-authored-by: Peter Czuczor <61667986+czp13@users.noreply.github.com> --- .../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',