From 819b93e5fb9661e2fcf6d5b3a0a12b59f59a2d5a Mon Sep 17 00:00:00 2001 From: Alexander Lichter Date: Mon, 5 Dec 2022 15:43:32 +0100 Subject: [PATCH 1/5] feat(layers): support for error.vue --- packages/nuxt/src/core/app.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/nuxt/src/core/app.ts b/packages/nuxt/src/core/app.ts index 2bf753c58cd..21dbe0047b8 100644 --- a/packages/nuxt/src/core/app.ts +++ b/packages/nuxt/src/core/app.ts @@ -74,7 +74,9 @@ export async function resolveApp (nuxt: Nuxt, app: NuxtApp) { // Resolve error component if (!app.errorComponent) { - app.errorComponent = (await findPath(['~/error'])) || resolve(nuxt.options.appDir, 'components/nuxt-error-page.vue') + app.errorComponent = await findPath( + nuxt.options._layers.map(layer => `${layer.config.srcDir}/error`) + ) } // Resolve layouts/ from all config layers From c6009ed1f91bb547a0f3b4c79b0b34ec2b9dbb98 Mon Sep 17 00:00:00 2001 From: Alexander Lichter Date: Mon, 5 Dec 2022 15:48:46 +0100 Subject: [PATCH 2/5] fix: use default component --- packages/nuxt/src/core/app.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/nuxt/src/core/app.ts b/packages/nuxt/src/core/app.ts index 21dbe0047b8..34d52a49d43 100644 --- a/packages/nuxt/src/core/app.ts +++ b/packages/nuxt/src/core/app.ts @@ -75,7 +75,10 @@ export async function resolveApp (nuxt: Nuxt, app: NuxtApp) { // Resolve error component if (!app.errorComponent) { app.errorComponent = await findPath( - nuxt.options._layers.map(layer => `${layer.config.srcDir}/error`) + [ + ...nuxt.options._layers.map(layer => `${layer.config.srcDir}/error`), + resolve(nuxt.options.appDir, 'components/nuxt-error-page.vue') + ] ) } From 2f538c4fd28d932a9b060aef22ea2aad41bf08fc Mon Sep 17 00:00:00 2001 From: Alexander Lichter Date: Mon, 5 Dec 2022 16:11:50 +0100 Subject: [PATCH 3/5] refactor: pathe.join + fallback --- packages/nuxt/src/core/app.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/nuxt/src/core/app.ts b/packages/nuxt/src/core/app.ts index 34d52a49d43..42e1c56c1d6 100644 --- a/packages/nuxt/src/core/app.ts +++ b/packages/nuxt/src/core/app.ts @@ -1,5 +1,5 @@ import { promises as fsp } from 'node:fs' -import { dirname, resolve } from 'pathe' +import { dirname, resolve, join } from 'pathe' import defu from 'defu' import type { Nuxt, NuxtApp, NuxtPlugin, NuxtTemplate, ResolvedNuxtTemplate } from '@nuxt/schema' import { findPath, resolveFiles, normalizePlugin, normalizeTemplate, compileTemplate, templateUtils, tryResolveModule, resolvePath, resolveAlias } from '@nuxt/kit' @@ -75,11 +75,8 @@ export async function resolveApp (nuxt: Nuxt, app: NuxtApp) { // Resolve error component if (!app.errorComponent) { app.errorComponent = await findPath( - [ - ...nuxt.options._layers.map(layer => `${layer.config.srcDir}/error`), - resolve(nuxt.options.appDir, 'components/nuxt-error-page.vue') - ] - ) + nuxt.options._layers.map(layer => join(layer.config.srcDir, 'error')), + ) ?? resolve(nuxt.options.appDir, 'components/nuxt-error-page.vue') } // Resolve layouts/ from all config layers From 435a39d07a0e33452b87a0004270caa805b43bff Mon Sep 17 00:00:00 2001 From: Alexander Lichter Date: Mon, 5 Dec 2022 16:14:38 +0100 Subject: [PATCH 4/5] chore: lint --- packages/nuxt/src/core/app.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nuxt/src/core/app.ts b/packages/nuxt/src/core/app.ts index 42e1c56c1d6..b01da5fe651 100644 --- a/packages/nuxt/src/core/app.ts +++ b/packages/nuxt/src/core/app.ts @@ -75,7 +75,7 @@ export async function resolveApp (nuxt: Nuxt, app: NuxtApp) { // Resolve error component if (!app.errorComponent) { app.errorComponent = await findPath( - nuxt.options._layers.map(layer => join(layer.config.srcDir, 'error')), + nuxt.options._layers.map(layer => join(layer.config.srcDir, 'error')) ) ?? resolve(nuxt.options.appDir, 'components/nuxt-error-page.vue') } From c8be652b37c86ae19e96400296e51826b840296d Mon Sep 17 00:00:00 2001 From: Alexander Lichter Date: Mon, 5 Dec 2022 16:22:05 +0100 Subject: [PATCH 5/5] Update packages/nuxt/src/core/app.ts Co-authored-by: Daniel Roe --- packages/nuxt/src/core/app.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/src/core/app.ts b/packages/nuxt/src/core/app.ts index b01da5fe651..95deb12f17e 100644 --- a/packages/nuxt/src/core/app.ts +++ b/packages/nuxt/src/core/app.ts @@ -74,9 +74,9 @@ export async function resolveApp (nuxt: Nuxt, app: NuxtApp) { // Resolve error component if (!app.errorComponent) { - app.errorComponent = await findPath( + app.errorComponent = (await findPath( nuxt.options._layers.map(layer => join(layer.config.srcDir, 'error')) - ) ?? resolve(nuxt.options.appDir, 'components/nuxt-error-page.vue') + )) ?? resolve(nuxt.options.appDir, 'components/nuxt-error-page.vue') } // Resolve layouts/ from all config layers