Nuxt error.vue访问无效页面不渲染仅返回404的原因咨询
可能的原因分析
- 路由配置未正确捕获404路由:如果是用Vue Router的项目,必须在路由表最后加一条通配符路由指向error.vue。比如没配置
{ path: '*', component: () => import('./error.vue') }(Vue Router 3.x)或者{ path: '/:pathMatch(.*)*', component: ErrorPage }(Vue Router 4.x),服务器会直接返回404,根本走不到Vue的路由捕获逻辑。 - 服务器或框架的页面放置规则不匹配:比如用Nuxt这类SSR框架时,error.vue要求放在
layouts目录下,和app.vue同级是不生效的。如果是静态部署,服务器没配置 fallback 到index.html,访问不存在的路径时服务器直接返回404,触发不了前端路由的处理。 - error.vue组件自身有渲染问题:服务器能打日志不代表组件能正常渲染,组件里可能有语法错误、依赖缺失或者生命周期钩子报错,导致渲染失败,浏览器只能显示默认的404。可以看看浏览器控制台有没有组件相关的报错。
- 服务器路由优先级高于前端路由:Nginx、Apache这类服务器如果配置了优先匹配静态文件或后端路由,访问不存在的路径时,服务器直接返回404,不会把请求转发给Vue的入口文件index.html,前端路由自然没法处理。
- Vue Router版本兼容问题:不同版本的Router对404路由的写法要求不一样,比如Router 4.x弃用了
*通配符,要用:pathMatch(.*)这类写法,写错了就捕获不到路由,导致返回404。
内容的提问来源于stack exchange,提问作者B. Koenig
相关产品推荐
相关产品推荐

