vue3 vueRouter4 :No match found for location with path "/home"?

整体架构:vue3.2+ts+vite3.x+vueRouter4.x

问题描述:根据权限动态加载路由,通过方法:router.addRoute(xx);会发现能正常进入目标页面但是会在控制台报一条警告:No match found for location with path "/home"

尝试:看了谷歌发现很多人反馈有几点

1:name重复(排查了,没有重复)
2:动态加载路由后用Hack方法进行跳转:next({...to,replace:true}) (用的就是这种方法,也不行)
3:嵌套路由子路由多了'/'(排查了,没有)

截图:

vue3 vueRouter4 :No match found for location with path "/home"?
vue3 vueRouter4 :No match found for location with path "/home"?
vue3 vueRouter4 :No match found for location with path "/home"?

有没有有经验的~头秃了 搞了好久 虽然不影响页面展示,但是这个报错很膈应人~


回答:

最好也提供一下 addRoute 时的路由树。然后就确认一下在路由时路由树是否已经添加完毕了。有可能在第一次跳转时路由树并没有动态添加完毕。

另外也可以确认一下如果使用 name 跳转时页面路径是否和直接使用 path 跳转是一致的。


回答:

如果当前路由是动态追加的,beforeEach第一次执行的时候,这个路由还没追加进去,那么路由的ma tched为空,就会报这个警告。
解决办法,在router/index.ts文件里,也就是初始化路由的文件里,注册好404路由,这样第一次执行beforeEach的时候匹配不到路由,就会匹配已经有的404路由,matched里就不是空的了,就没有警告了。

router/index.ts:

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'

const routes: Array<RouteRecordRaw> = [

{

path: '/:catchAll(.*)',

name: '404',

component: () => import('@/views/error/index.vue')

}

]

const router = createRouter({

history: createWebHistory(process.env.BASE_URL),

routes

})

export default router


回答:

我的问题和你一毛一样,能正常跳转就是控制台会警告很烦
vue3 vueRouter4 :No match found for location with path "/home"?

我在准备添加路由前加上404页面就好了
vue3 vueRouter4 :No match found for location with path "/home"?

以上是 vue3 vueRouter4 :No match found for location with path &quot;/home&quot;? 的全部内容, 来源链接: utcz.com/p/932996.html

回到顶部