From 51b231b4ebeeae35f504aa7b2b6d4141a6388a87 Mon Sep 17 00:00:00 2001 From: Alex Liu Date: Wed, 30 Aug 2023 18:59:20 +0800 Subject: [PATCH 1/3] fix(nuxt): ensure middleware behavior consisten vue-router --- packages/nuxt/src/pages/runtime/plugins/router.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nuxt/src/pages/runtime/plugins/router.ts b/packages/nuxt/src/pages/runtime/plugins/router.ts index c535db1b6eab..b8de9504b929 100644 --- a/packages/nuxt/src/pages/runtime/plugins/router.ts +++ b/packages/nuxt/src/pages/runtime/plugins/router.ts @@ -179,6 +179,7 @@ const plugin: Plugin<{ router: Router }> = defineNuxtPlugin({ } } + if (result === true) { continue } if (result || result === false) { return result } From 266ead813a0f51cce0b1716559ac4b3f7f4301de Mon Sep 17 00:00:00 2001 From: Alex Liu Date: Wed, 30 Aug 2023 21:58:46 +0800 Subject: [PATCH 2/3] fix(nuxt): ensure middleware behavior consisten --- packages/nuxt/src/app/plugins/router.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/src/app/plugins/router.ts b/packages/nuxt/src/app/plugins/router.ts index 06c5764c317f..4060ca79fa1c 100644 --- a/packages/nuxt/src/app/plugins/router.ts +++ b/packages/nuxt/src/app/plugins/router.ts @@ -58,7 +58,7 @@ function getRouteFromPath (fullPath: string | Partial) { } } -type RouteGuardReturn = void | Error | string | false +type RouteGuardReturn = void | Error | string | boolean interface RouteGuard { (to: Route, from: Route): RouteGuardReturn | Promise @@ -130,7 +130,7 @@ export default defineNuxtPlugin<{ route: Route, router: Router }>({ // Cancel navigation if (result === false || result instanceof Error) { return } // Redirect - if (result) { return handleNavigation(result, true) } + if (typeof result === 'string' && result.length) { return handleNavigation(result, true) } } for (const handler of hooks['resolve:before']) { @@ -250,6 +250,7 @@ export default defineNuxtPlugin<{ route: Route, router: Router }>({ return nuxtApp.runWithContext(() => showError(error)) } } + if (result === true) { continue } if (result || result === false) { return result } } } From bfbd41f90dd936788c1912c47c68175eefccecd2 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 30 Aug 2023 15:47:22 +0100 Subject: [PATCH 3/3] test: add test case for `true` return --- test/fixtures/basic/middleware/abort.global.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/fixtures/basic/middleware/abort.global.ts b/test/fixtures/basic/middleware/abort.global.ts index efc4f51753de..d278883f765f 100644 --- a/test/fixtures/basic/middleware/abort.global.ts +++ b/test/fixtures/basic/middleware/abort.global.ts @@ -4,4 +4,5 @@ export default defineNuxtRouteMiddleware((to) => { statusCode: 401 }) } + return true })