diff --git a/src/presets/nitro-dev.ts b/src/presets/nitro-dev.ts index ebf2ceed40..1e9ed9f343 100644 --- a/src/presets/nitro-dev.ts +++ b/src/presets/nitro-dev.ts @@ -1,3 +1,5 @@ +import { pathToFileURL } from 'url' +import { isWindows } from 'std-env' import { defineNitroPreset } from '../preset' export const nitroDev = defineNitroPreset({ @@ -8,5 +10,13 @@ export const nitroDev = defineNitroPreset({ }, externals: { trace: false }, inlineDynamicImports: true, // externals plugin limitation - sourceMap: true + sourceMap: true, + hooks: { + 'nitro:rollup:before' (nitro) { + if (isWindows) { + // Windows dynamic imports should be file:// url + nitro.options.alias['#build'] = pathToFileURL(nitro.options.buildDir).href + } + } + } }) diff --git a/src/presets/nitro-prerender.ts b/src/presets/nitro-prerender.ts index baabf0016d..695e9af52b 100644 --- a/src/presets/nitro-prerender.ts +++ b/src/presets/nitro-prerender.ts @@ -1,3 +1,5 @@ +import { pathToFileURL } from 'url' +import { isWindows } from 'std-env' import { defineNitroPreset } from '../preset' export const nitroPrerender = defineNitroPreset({ @@ -6,5 +8,13 @@ export const nitroPrerender = defineNitroPreset({ output: { serverDir: '{{ buildDir }}/prerender' }, - externals: { trace: false } + externals: { trace: false }, + hooks: { + 'nitro:rollup:before' (nitro) { + if (isWindows) { + // Windows dynamic imports should be file:// url + nitro.options.alias['#build'] = pathToFileURL(nitro.options.buildDir).href + } + } + } }) diff --git a/src/rollup/config.ts b/src/rollup/config.ts index 5d5401512f..6bdcc23fbc 100644 --- a/src/rollup/config.ts +++ b/src/rollup/config.ts @@ -1,4 +1,3 @@ -import { pathToFileURL } from 'url' import { dirname, join, relative, resolve } from 'pathe' import type { InputOptions, OutputOptions } from 'rollup' import defu from 'defu' @@ -12,7 +11,6 @@ import replace from '@rollup/plugin-replace' import virtual from '@rollup/plugin-virtual' import wasmPlugin from '@rollup/plugin-wasm' import inject from '@rollup/plugin-inject' -import { isWindows } from 'std-env' import { visualizer } from 'rollup-plugin-visualizer' import * as unenv from 'unenv' import type { Preset } from 'unenv' @@ -226,10 +224,7 @@ export const plugins = [ rollupConfig.plugins.push(alias({ entries: resolveAliases({ '#nitro': runtimeDir, - // Windows dynamic imports should be file:// url - '#build': nitro.options.dev && isWindows - ? pathToFileURL(nitro.options.buildDir).href - : nitro.options.buildDir, + '#build': nitro.options.buildDir, '~': nitro.options.srcDir, '@/': nitro.options.srcDir, '~~': nitro.options.rootDir,