Skip to content

Commit 35ca671

Browse files
committed
fix: resolve Nitro compatibility aliases during SSR
1 parent d67d137 commit 35ca671

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

packages/script/src/nitro-compatibility.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,13 @@ export function useRuntimeConfig(_event) { return _useRuntimeConfig() }
7979
function applyNitroRuntimeCompatibility(nuxt: Nuxt, compatibility: NitroRuntimeCompatibility): void {
8080
const nuxtOptions = nuxt.options as Nuxt['options'] & { nitro?: NitroCompatibilityOptions }
8181
const nitroOptions = nuxtOptions.nitro ||= {}
82+
const h3Runtime = compatibility._tag === 'nitro-v3' ? compatibility.h3 : 'h3'
8283
nitroOptions.alias ||= {}
8384
nitroOptions.virtual ||= {}
84-
nitroOptions.alias[H3_RUNTIME_MODULE] = compatibility._tag === 'nitro-v3' ? compatibility.h3 : 'h3'
85+
const nuxtAliases = nuxtOptions.alias ||= {}
86+
delete nuxtAliases[H3_RUNTIME_MODULE]
87+
nuxtOptions.alias = { [H3_RUNTIME_MODULE]: h3Runtime, ...nuxtAliases }
88+
nitroOptions.alias[H3_RUNTIME_MODULE] = h3Runtime
8589
nitroOptions.virtual[NITRO_RUNTIME_MODULE] = compatibility._tag === 'nitro-v3'
8690
? renderNitroV3Runtime(compatibility)
8791
: nitroV2Runtime

test/unit/nitro-compatibility.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ function createNuxt(): Nuxt {
1313
hookOnce: hookOnceMock,
1414
},
1515
options: {
16+
alias: {
17+
'#nuxt-scripts': '/runtime',
18+
},
1619
nitro: {},
1720
},
1821
} as Nuxt
@@ -37,6 +40,8 @@ describe('setupNitroRuntimeCompatibility', () => {
3740

3841
await setupNitroRuntimeCompatibility(nuxt, createDependencies('4.5.0'))
3942

43+
expect(nuxt.options.alias['#nuxt-scripts/h3']).toBe('h3')
44+
expect(Object.keys(nuxt.options.alias)[0]).toBe('#nuxt-scripts/h3')
4045
expect(nuxt.options.nitro.alias?.['#nuxt-scripts/h3']).toBe('h3')
4146
expect(nuxt.options.nitro.virtual?.['#nuxt-scripts/nitro']).toContain('from \'nitropack/runtime\'')
4247
expect(addTypeTemplateMock).toHaveBeenCalledWith(expect.any(Object), { nitro: true, node: true, nuxt: true })
@@ -53,6 +58,7 @@ describe('setupNitroRuntimeCompatibility', () => {
5358
await setupNitroRuntimeCompatibility(nuxt, createDependencies('5.0.0', resolveNitroImport))
5459

5560
expect(resolveNitroImport).toHaveBeenCalledTimes(4)
61+
expect(nuxt.options.alias['#nuxt-scripts/h3']).toBe('file:///nuxt-nitro/nitro-h3.mjs')
5662
expect(nuxt.options.nitro.alias?.['#nuxt-scripts/h3']).toBe('file:///nuxt-nitro/nitro-h3.mjs')
5763
expect(nuxt.options.nitro.virtual?.['#nuxt-scripts/nitro']).toContain('file:///nuxt-nitro/nitro-app.mjs')
5864
expect(nuxt.options.nitro.virtual?.['#nuxt-scripts/nitro']).toContain('file:///nuxt-nitro/nitro-cache.mjs')

0 commit comments

Comments
 (0)