From 1f5d4898500936e663405c1f8dd355e592189591 Mon Sep 17 00:00:00 2001 From: Jason Poindexter Date: Fri, 13 Mar 2020 14:26:35 -0700 Subject: [PATCH] fix(vue-app): middleware not executing on double browser back navigation (#6775) fixes #6716. --- packages/vue-app/template/client.js | 4 ++-- packages/vue-app/template/server.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/vue-app/template/client.js b/packages/vue-app/template/client.js index 23b1079eaa..3790e9173b 100644 --- a/packages/vue-app/template/client.js +++ b/packages/vue-app/template/client.js @@ -825,8 +825,8 @@ function addHotReload ($component, depth) { router.beforeEach(loadAsyncComponents.bind(_app)) router.beforeEach(render.bind(_app)) - // If page already is server rendered - if (NUXT.serverRendered) { + // If page already is server rendered and it was done on the same route path as client side render + if (NUXT.serverRendered && NUXT.routePath === _app.context.route.path) { mount() return } diff --git a/packages/vue-app/template/server.js b/packages/vue-app/template/server.js index 5e362b3274..4e05b54a41 100644 --- a/packages/vue-app/template/server.js +++ b/packages/vue-app/template/server.js @@ -72,10 +72,12 @@ export default async (ssrContext) => { // Used for beforeNuxtRender({ Components, nuxtState }) ssrContext.beforeRenderFns = [] // Nuxt object (window{{globals.context}}, defaults to window.__NUXT__) - ssrContext.nuxt = { <% if (features.layouts) { %>layout: 'default', <% } %>data: [], <% if (features.fetch) { %>fetch: [], <% } %>error: null<%= (store ? ', state: null' : '') %>, serverRendered: true } + ssrContext.nuxt = { <% if (features.layouts) { %>layout: 'default', <% } %>data: [], <% if (features.fetch) { %>fetch: [], <% } %>error: null<%= (store ? ', state: null' : '') %>, serverRendered: true, routePath: '' } // Create the app definition and the instance (created for each request) const { app, router<%= (store ? ', store' : '') %> } = await createApp(ssrContext) const _app = new Vue(app) + // Add ssr route path to nuxt context so we can account for page navigation between ssr and csr + ssrContext.nuxt.routePath = app.context.route.path <% if (features.meta) { %> // Add meta infos (used in renderer.js)