From 1cc05b9ae6a25d4fab25dd72fc933bb6d7951cc9 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 20 Nov 2023 22:18:26 +0100 Subject: [PATCH] fix(nuxt): handle errors when booting app with `app:error` (#24376) --- packages/nuxt/src/app/entry.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/nuxt/src/app/entry.ts b/packages/nuxt/src/app/entry.ts index 58ad36a2de..2bd8722438 100644 --- a/packages/nuxt/src/app/entry.ts +++ b/packages/nuxt/src/app/entry.ts @@ -58,11 +58,17 @@ if (import.meta.client) { const nuxt = createNuxtApp({ vueApp }) + async function handleVueError(err: any) { + await nuxt.callHook('app:error', err) + nuxt.payload.error = (nuxt.payload.error || err) as any + } + + vueApp.config.errorHandler = handleVueError + try { await applyPlugins(nuxt, plugins) } catch (err) { - await nuxt.callHook('app:error', err) - nuxt.payload.error = (nuxt.payload.error || err) as any + handleVueError(err) } try { @@ -72,10 +78,13 @@ if (import.meta.client) { await nuxt.hooks.callHook('app:mounted', vueApp) await nextTick() } catch (err) { - await nuxt.callHook('app:error', err) - nuxt.payload.error = (nuxt.payload.error || err) as any + handleVueError(err) } + // If the errorHandler is not overridden by the user, we unset it + if (vueApp.config.errorHandler === handleVueError) + vueApp.config.errorHandler = undefined + return vueApp }