我有一个VUEJS SSR设置,无法弄清楚如何解决这个问题 .

我的路线是这样的:

{
  path: '/:blogSlug', component: BlogPost, name: 'blog-post'
}

然后在asyncData函数中我有这个代码:

asyncData({store, route, router}) {
            let slug = route.params.blogSlug

            if (!store.state.blog.posts[slug]) {
                return store.dispatch('FETCH_BLOG_POST', { slug: slug }).catch((error) => {
                    console.log("error - pushing to /404")
                    router.push('/404');
                })
            }

            return(Promise.resolve());
        }

如果我禁用我的javascript,这现在有效,主要是因为在服务器上执行asyncData(),然后如果找不到博客文章我推('/ 404')显示一个漂亮的“未找到”页面并且html被发回浏览器 .

然后,主要是因为浏览器中的URL没有改变,在水化过程中一切都很糟糕,因为VueJS仍在尝试渲染BlogPost组件而不是404 .

我的问题是,我可以在我的窗口中设置更新的URL . INITIAL_STATE ?或者我可以以某种方式更改浏览器的URL?

如果不清楚,我可以在问题中添加您需要的所有内容 .