From c614bf621f414bff3f836cf2471e98deb9fd0e58 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 6 May 2022 11:12:10 +0100 Subject: [PATCH 1/3] fix(nuxt): normalise window location for universal router --- packages/nuxt/src/app/plugins/router.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/nuxt/src/app/plugins/router.ts b/packages/nuxt/src/app/plugins/router.ts index 38656460413..30e2409ba71 100644 --- a/packages/nuxt/src/app/plugins/router.ts +++ b/packages/nuxt/src/app/plugins/router.ts @@ -1,9 +1,9 @@ import { reactive, h } from 'vue' -import { parseURL, parseQuery } from 'ufo' +import { parseURL, parseQuery, withoutBase } from 'ufo' import { createError } from 'h3' import { defineNuxtPlugin } from '..' import { callWithNuxt } from '../nuxt' -import { clearError, navigateTo, throwError } from '#app' +import { clearError, navigateTo, throwError, useRuntimeConfig } from '#app' interface Route { /** Percentage encoded pathname section of the URL. */ @@ -85,8 +85,14 @@ interface Router { removeRoute: (name: string) => void } +function createCurrentLocation (base: string, location: Location): string { + const { pathname, search, hash } = location + return withoutBase(pathname, base) + search + hash +} + export default defineNuxtPlugin<{ route: Route, router: Router }>((nuxtApp) => { - const initialURL = process.client ? window.location.href : nuxtApp.ssrContext.url + const { baseURL } = useRuntimeConfig().app + const initialURL = process.client ? createCurrentLocation(baseURL, window.location) : nuxtApp.ssrContext.url const routes = [] const hooks: { [key in keyof RouterHooks]: RouterHooks[key][] } = { From 21f0438eb10e5fc24389ea4349c905dec08a5fcf Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 6 May 2022 11:56:36 +0100 Subject: [PATCH 2/3] style: remove destructuring --- packages/nuxt/src/app/plugins/router.ts | 2 +- packages/nuxt/src/pages/runtime/router.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/src/app/plugins/router.ts b/packages/nuxt/src/app/plugins/router.ts index 30e2409ba71..7947055429b 100644 --- a/packages/nuxt/src/app/plugins/router.ts +++ b/packages/nuxt/src/app/plugins/router.ts @@ -91,7 +91,7 @@ function createCurrentLocation (base: string, location: Location): string { } export default defineNuxtPlugin<{ route: Route, router: Router }>((nuxtApp) => { - const { baseURL } = useRuntimeConfig().app + const baseURL = useRuntimeConfig().app.baseURL const initialURL = process.client ? createCurrentLocation(baseURL, window.location) : nuxtApp.ssrContext.url const routes = [] diff --git a/packages/nuxt/src/pages/runtime/router.ts b/packages/nuxt/src/pages/runtime/router.ts index a99781b2ab0..62413ceaeb5 100644 --- a/packages/nuxt/src/pages/runtime/router.ts +++ b/packages/nuxt/src/pages/runtime/router.ts @@ -54,7 +54,7 @@ export default defineNuxtPlugin(async (nuxtApp) => { nuxtApp.vueApp.component('NuxtNestedPage', NuxtPage) nuxtApp.vueApp.component('NuxtChild', NuxtPage) - const { baseURL } = useRuntimeConfig().app + const baseURL = useRuntimeConfig().app.baseURL const routerHistory = process.client ? createWebHistory(baseURL) : createMemoryHistory(baseURL) From 43c0e06ba4ae988fbe336f74937b4f61050b825c Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 6 May 2022 11:58:17 +0100 Subject: [PATCH 3/3] refactor: inline client-side initial url calculation --- packages/nuxt/src/app/plugins/router.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/nuxt/src/app/plugins/router.ts b/packages/nuxt/src/app/plugins/router.ts index 7947055429b..2c5fec99d1c 100644 --- a/packages/nuxt/src/app/plugins/router.ts +++ b/packages/nuxt/src/app/plugins/router.ts @@ -85,14 +85,10 @@ interface Router { removeRoute: (name: string) => void } -function createCurrentLocation (base: string, location: Location): string { - const { pathname, search, hash } = location - return withoutBase(pathname, base) + search + hash -} - export default defineNuxtPlugin<{ route: Route, router: Router }>((nuxtApp) => { - const baseURL = useRuntimeConfig().app.baseURL - const initialURL = process.client ? createCurrentLocation(baseURL, window.location) : nuxtApp.ssrContext.url + const initialURL = process.client + ? withoutBase(window.location.pathname, useRuntimeConfig().app.baseURL) + window.location.search + window.location.hash + : nuxtApp.ssrContext.url const routes = [] const hooks: { [key in keyof RouterHooks]: RouterHooks[key][] } = {