From: Lay Date: Mon, 11 Jul 2022 13:28:47 +0000 (+0800) Subject: fix(nuxt): plugin injection on latest Nuxt 3 context (#1433) X-Git-Tag: @pinia/nuxt@0.2.0~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd0c52f75645a49226f0473d4b0d3ad1a65635c7;p=thirdparty%2Fvuejs%2Fpinia.git fix(nuxt): plugin injection on latest Nuxt 3 context (#1433) Co-authored-by: Eduardo San Martin Morote --- diff --git a/packages/nuxt/src/templates/plugin.ts b/packages/nuxt/src/templates/plugin.ts index c523f9b7..c92b5eea 100644 --- a/packages/nuxt/src/templates/plugin.ts +++ b/packages/nuxt/src/templates/plugin.ts @@ -22,7 +22,12 @@ const PiniaNuxtPlugin: Plugin = (context, inject) => { // make sure to inject pinia after installing the plugin because in Nuxt 3, inject defines a non configurable getter // on app.config.globalProperties // add $pinia to the context - inject('pinia', pinia) + if (isVue2) { + inject('pinia', pinia) + } else { + // @ts-expect-error: vue 3 only + context.provide('pinia', pinia) + } // to allow accessing pinia without the $ // TODO: remove this in deprecation context.pinia = pinia @@ -43,10 +48,14 @@ const PiniaNuxtPlugin: Plugin = (context, inject) => { }) } else { // there is no beforeNuxtRender in Nuxt 3 - context.nuxtState.pinia = pinia.state.value + // @ts-expect-error: vue 3 only + context.ssrContext.payload.pinia = pinia.state.value + } + } else { + const source = isVue2 ? context.nuxtState : context.payload + if (source && source.pinia) { + pinia.state.value = source.pinia } - } else if (context.nuxtState && context.nuxtState.pinia) { - pinia.state.value = context.nuxtState.pinia } }