diff --git a/packages/nuxt/src/app/nuxt.ts b/packages/nuxt/src/app/nuxt.ts index b2aa94333db..0a732cade35 100644 --- a/packages/nuxt/src/app/nuxt.ts +++ b/packages/nuxt/src/app/nuxt.ts @@ -85,7 +85,7 @@ interface _NuxtApp { rendered?: Function error?: Error | { url: string - statusCode: string + statusCode: number statusMessage: string message: string description: string diff --git a/packages/nuxt/src/core/runtime/nitro/renderer.ts b/packages/nuxt/src/core/runtime/nitro/renderer.ts index ea346c14eff..56ddc607ecc 100644 --- a/packages/nuxt/src/core/runtime/nitro/renderer.ts +++ b/packages/nuxt/src/core/runtime/nitro/renderer.ts @@ -167,8 +167,13 @@ export default defineRenderHandler(async (event) => { // Whether we're rendering an error page const ssrError = event.node.req.url?.startsWith('/__nuxt_error') - ? getQuery(event) as Exclude + ? getQuery(event) as unknown as Exclude : null + + if (ssrError && ssrError.statusCode) { + ssrError.statusCode = parseInt(ssrError.statusCode as any) + } + if (ssrError && event.node.req.socket.readyState !== 'readOnly' /* direct request */) { throw createError('Cannot directly render error page!') } diff --git a/test/bundle.test.ts b/test/bundle.test.ts index c1f56817157..32684a6bc78 100644 --- a/test/bundle.test.ts +++ b/test/bundle.test.ts @@ -40,7 +40,7 @@ describe.skipIf(isWindows)('minimal nuxt application', () => { it('default server bundle size', async () => { stats.server = await analyzeSizes(['**/*.mjs', '!node_modules'], serverDir) - expect(stats.server.totalBytes).toBeLessThan(90000) + expect(stats.server.totalBytes).toBeLessThan(90200) const modules = await analyzeSizes('node_modules/**/*', serverDir) expect(modules.totalBytes).toBeLessThan(2700000)