From 4d34a7362e57ba8b04e8fee0e0f2f74ce05f13eb Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 11 Feb 2021 17:49:36 -0500 Subject: [PATCH] fix: fix out of root static file serving on windows fix #1982 --- packages/vite/src/node/server/middlewares/static.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/vite/src/node/server/middlewares/static.ts b/packages/vite/src/node/server/middlewares/static.ts index b633c22192db86..38916d252a0b5c 100644 --- a/packages/vite/src/node/server/middlewares/static.ts +++ b/packages/vite/src/node/server/middlewares/static.ts @@ -62,18 +62,19 @@ export function serveStaticMiddleware( } export function serveRawFsMiddleware(): Connect.NextHandleFunction { - const fsRoot = - os.platform() == 'win32' ? process.cwd().split(path.sep)[0] + '/' : '/' - const serveFromRoot = sirv(fsRoot, sirvOptions) + const isWin = os.platform() === 'win32' + const serveFromRoot = sirv('/', sirvOptions) return (req, res, next) => { - const url = req.url! + let url = req.url! // In some cases (e.g. linked monorepos) files outside of root will // reference assets that are also out of served root. In such cases // the paths are rewritten to `/@fs/` prefixed paths and must be served by // searching based from fs root. if (url.startsWith(FS_PREFIX)) { - req.url = decodeURI(url.slice(FS_PREFIX.length)) + url = url.slice(FS_PREFIX.length) + if (isWin) url = url.replace(/^[A-Z]:/i, '') + req.url = decodeURI(url) serveFromRoot(req, res, next) } else { next()