diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 45c81fc9172aeb..92ba0d72ab3dae 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -1418,7 +1418,7 @@ export async function resolveConfig( inlineConfig, root: resolvedRoot, base, - decodedBase: decodeURI(base), + decodedBase: decodeBase(base), rawBase: resolvedBase, publicDir: resolvedPublicDir, cacheDir, @@ -1678,6 +1678,16 @@ export function resolveBaseUrl( return base } +function decodeBase(base: string): string { + try { + return decodeURI(base) + } catch { + throw new Error( + 'The value passed to "base" option was malformed. It should be a valid URL.', + ) + } +} + export function sortUserPlugins( plugins: (Plugin | Plugin[])[] | undefined, ): [Plugin[], Plugin[], Plugin[]] {