From b17aa3f08e314b18e45cd742c8f2fb0455ae84bb Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 11 Jun 2024 19:59:48 +0100 Subject: [PATCH] fix(nuxt): manually assign payload reactivity when `ssr: false` (#27542) --- packages/nuxt/src/app/composables/payload.ts | 8 +++++--- packages/nuxt/src/app/nuxt.ts | 2 +- packages/nuxt/src/core/runtime/nitro/renderer.ts | 4 ---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/nuxt/src/app/composables/payload.ts b/packages/nuxt/src/app/composables/payload.ts index 7a7d8fd2e7e6..69cd0919db49 100644 --- a/packages/nuxt/src/app/composables/payload.ts +++ b/packages/nuxt/src/app/composables/payload.ts @@ -3,6 +3,7 @@ import { parse } from 'devalue' import { useHead } from '@unhead/vue' import { getCurrentInstance, onServerPrefetch } from 'vue' import { useNuxtApp, useRuntimeConfig } from '../nuxt' +import type { NuxtPayload } from '../nuxt' import { useRoute } from './router' import { getAppManifest, getRouteRules } from './manifest' @@ -95,11 +96,12 @@ export async function isPrerendered (url = useRoute().path) { return !!rules.prerender && !rules.redirect } -let payloadCache: any = null +let payloadCache: NuxtPayload | null = null + /** @since 3.4.0 */ export async function getNuxtClientPayload () { if (import.meta.server) { - return + return null } if (payloadCache) { return payloadCache @@ -107,7 +109,7 @@ export async function getNuxtClientPayload () { const el = document.getElementById('__NUXT_DATA__') if (!el) { - return {} + return {} as Partial } const inlineData = await parsePayload(el.textContent || '') diff --git a/packages/nuxt/src/app/nuxt.ts b/packages/nuxt/src/app/nuxt.ts index d8fd5ffb5a28..03f08213e4f3 100644 --- a/packages/nuxt/src/app/nuxt.ts +++ b/packages/nuxt/src/app/nuxt.ts @@ -69,7 +69,7 @@ export interface NuxtSSRContext extends SSRContext { /** whether we are rendering an SSR error */ error?: boolean nuxt: _NuxtApp - payload: NuxtPayload + payload: Partial head: VueHeadClient /** This is used solely to render runtime config with SPA renderer. */ config?: Pick diff --git a/packages/nuxt/src/core/runtime/nitro/renderer.ts b/packages/nuxt/src/core/runtime/nitro/renderer.ts index 4fc1f2839fce..f33a9774aa28 100644 --- a/packages/nuxt/src/core/runtime/nitro/renderer.ts +++ b/packages/nuxt/src/core/runtime/nitro/renderer.ts @@ -165,11 +165,7 @@ const getSPARenderer = lazyCachedFunction(async () => { const config = useRuntimeConfig(ssrContext.event) ssrContext.modules = ssrContext.modules || new Set() ssrContext!.payload = { - _errors: {}, serverRendered: false, - data: {}, - state: {}, - once: new Set(), } ssrContext.config = { public: config.public,