diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts index 9d870fe8df8f19..45d0e8f3749eae 100644 --- a/packages/vite/src/node/server/middlewares/indexHtml.ts +++ b/packages/vite/src/node/server/middlewares/indexHtml.ts @@ -151,6 +151,10 @@ export function indexHtmlMiddleware( ): Connect.NextHandleFunction { // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` return async function viteIndexHtmlMiddleware(req, res, next) { + if (res.writableEnded) { + return next() + } + const url = req.url && cleanUrl(req.url) // spa-fallback always redirects to /index.html if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') { diff --git a/packages/vite/src/node/server/send.ts b/packages/vite/src/node/server/send.ts index 1c54ec46f88af8..777e91abf9438c 100644 --- a/packages/vite/src/node/server/send.ts +++ b/packages/vite/src/node/server/send.ts @@ -20,6 +20,10 @@ export function send( cacheControl = 'no-cache', map?: SourceMap | null ): void { + if (res.writableEnded) { + return + } + if (req.headers['if-none-match'] === etag) { res.statusCode = 304 return res.end()