From ba3898ecad9b72ca0cf56ecef319a1ee3aa3aab4 Mon Sep 17 00:00:00 2001 From: Jiby Jose Date: Mon, 3 Oct 2022 21:54:56 +0200 Subject: [PATCH 1/2] fix: appType mpa Co-authored By: brillout --- packages/vite/src/node/server/index.ts | 6 +++--- .../{spaFallback.ts => htmlFallback.ts} | 18 ++++++++++-------- .../src/node/server/middlewares/indexHtml.ts | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) rename packages/vite/src/node/server/middlewares/{spaFallback.ts => htmlFallback.ts} (60%) diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 77b91a4dfd6dba..20fb946404e114 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -53,7 +53,7 @@ import type { WebSocketServer } from './ws' import { createWebSocketServer } from './ws' import { baseMiddleware } from './middlewares/base' import { proxyMiddleware } from './middlewares/proxy' -import { spaFallbackMiddleware } from './middlewares/spaFallback' +import { htmlFallbackMiddleware } from './middlewares/htmlFallback' import { transformMiddleware } from './middlewares/transform' import { createDevHtmlTransformFn, @@ -561,8 +561,8 @@ export async function createServer( middlewares.use(serveStaticMiddleware(root, server)) // spa fallback - if (config.appType === 'spa') { - middlewares.use(spaFallbackMiddleware(root)) + if (config.appType === 'spa' || config.appType === 'mpa') { + middlewares.use(htmlFallbackMiddleware(root, config.appType === 'spa')) } // run post config hooks diff --git a/packages/vite/src/node/server/middlewares/spaFallback.ts b/packages/vite/src/node/server/middlewares/htmlFallback.ts similarity index 60% rename from packages/vite/src/node/server/middlewares/spaFallback.ts rename to packages/vite/src/node/server/middlewares/htmlFallback.ts index 6f5b645cd02429..e400dcef199e97 100644 --- a/packages/vite/src/node/server/middlewares/spaFallback.ts +++ b/packages/vite/src/node/server/middlewares/htmlFallback.ts @@ -4,11 +4,12 @@ import history from 'connect-history-api-fallback' import type { Connect } from 'dep-types/connect' import { createDebugger } from '../../utils' -export function spaFallbackMiddleware( - root: string +export function htmlFallbackMiddleware( + root: string, + spaFallback: boolean ): Connect.NextHandleFunction { - const historySpaFallbackMiddleware = history({ - logger: createDebugger('vite:spa-fallback'), + const historyHtmlFallbackMiddleware = history({ + logger: createDebugger('vite:html-fallback'), // support /dir/ without explicit index.html rewrites: [ { @@ -20,15 +21,16 @@ export function spaFallbackMiddleware( if (fs.existsSync(path.join(root, rewritten))) { return rewritten } else { - return `/index.html` + if (spaFallback) { + return `/index.html` + } } } } ] }) - // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` - return function viteSpaFallbackMiddleware(req, res, next) { - return historySpaFallbackMiddleware(req, res, next) + return function htmlFallbackMiddleware(req, res, next) { + return historyHtmlFallbackMiddleware(req, res, next) } } diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts index 199468727c17c2..b3a35e45d82534 100644 --- a/packages/vite/src/node/server/middlewares/indexHtml.ts +++ b/packages/vite/src/node/server/middlewares/indexHtml.ts @@ -283,7 +283,7 @@ export function indexHtmlMiddleware( } const url = req.url && cleanUrl(req.url) - // spa-fallback always redirects to /index.html + // rewriteUrlMiddleware() appends '.html' to URLs if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') { const filename = getHtmlFilename(url, server) if (fs.existsSync(filename)) { From a43b0210dac6e681adb1ab0b56d25f578065bcc9 Mon Sep 17 00:00:00 2001 From: bluwy Date: Tue, 4 Oct 2022 20:24:59 +0800 Subject: [PATCH 2/2] chore: fixes --- packages/vite/src/node/server/index.ts | 2 +- packages/vite/src/node/server/middlewares/htmlFallback.ts | 3 ++- packages/vite/src/node/server/middlewares/indexHtml.ts | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 20fb946404e114..e919302e1d0412 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -560,7 +560,7 @@ export async function createServer( middlewares.use(serveRawFsMiddleware(server)) middlewares.use(serveStaticMiddleware(root, server)) - // spa fallback + // html fallback if (config.appType === 'spa' || config.appType === 'mpa') { middlewares.use(htmlFallbackMiddleware(root, config.appType === 'spa')) } diff --git a/packages/vite/src/node/server/middlewares/htmlFallback.ts b/packages/vite/src/node/server/middlewares/htmlFallback.ts index e400dcef199e97..314f4ec2a63e7f 100644 --- a/packages/vite/src/node/server/middlewares/htmlFallback.ts +++ b/packages/vite/src/node/server/middlewares/htmlFallback.ts @@ -30,7 +30,8 @@ export function htmlFallbackMiddleware( ] }) - return function htmlFallbackMiddleware(req, res, next) { + // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` + return function viteHtmlFallbackMiddleware(req, res, next) { return historyHtmlFallbackMiddleware(req, res, next) } } diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts index b3a35e45d82534..8c036629bcf26e 100644 --- a/packages/vite/src/node/server/middlewares/indexHtml.ts +++ b/packages/vite/src/node/server/middlewares/indexHtml.ts @@ -283,7 +283,7 @@ export function indexHtmlMiddleware( } const url = req.url && cleanUrl(req.url) - // rewriteUrlMiddleware() appends '.html' to URLs + // htmlFallbackMiddleware appends '.html' to URLs if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') { const filename = getHtmlFilename(url, server) if (fs.existsSync(filename)) {