diff --git a/packages/vite/src/node/plugins/resolve.ts b/packages/vite/src/node/plugins/resolve.ts index c16a5539fc5846..88e39dddfc9ff9 100644 --- a/packages/vite/src/node/plugins/resolve.ts +++ b/packages/vite/src/node/plugins/resolve.ts @@ -13,6 +13,7 @@ import { isObject, normalizePath, fsPathFromId, + ensureVolumeInPath, resolveFrom, isDataUrl, cleanUrl, @@ -262,7 +263,7 @@ function tryResolveFile( if (index) return normalizePath(index) + query } } else { - return normalizePath(file) + query + return normalizePath(ensureVolumeInPath(file)) + query } } } diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index 37700978637884..e8744b2cb67d48 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -60,15 +60,18 @@ const isWindows = os.platform() === 'win32' const VOLUME_RE = /^[A-Z]:/i export function normalizePath(id: string): string { - if (isWindows) { - return path.posix.normalize(slash(id.replace(VOLUME_RE, ''))) - } - return path.posix.normalize(id) + return path.posix.normalize(isWindows ? slash(id) : id) } export function fsPathFromId(id: string): string { const fsPath = normalizePath(id.slice(FS_PREFIX.length)) - return fsPath.startsWith('/') ? fsPath : `/${fsPath}` + return fsPath.startsWith('/') || fsPath.match(VOLUME_RE) + ? fsPath + : `/${fsPath}` +} + +export function ensureVolumeInPath(file: string): string { + return isWindows ? path.resolve(file) : file } export const queryRE = /\?.*$/