我现在有一个这样的场景:
1,默认路由数组只有两个 ,根和登录。
2,登录之后,我会进行动态添加路由,实现方法如下:
this.$router.options.routes = new_routes;
this.$router.addRoutes(this.$router.options.routes);
3,然后退出的时候,再把动态添加的路由干掉,实现方式和上面类似:
this.$router.options.routes = new_routes;//new_routes确定只有两个
this.$router.addRoutes(this.$router.options.routes);
console.log(this.$router.options.routes);//这里也确定只有两个
此时此刻一切都正常,没有任何问题,然而
当我在登录时,重复第二步的操作的时候,会出现以下一大堆警告:
[vue-router] Duplicate named routes definition: { name: "日期时间", path: "/components/form/datetime" }
......
......
凡是在第一次动态添加过的路由,二次动态添加的时候,全部都会出现这些,但功能逻辑操作上,一切都没有问题。
不知道什么原因?或者有没有办法不让显示这个警告,尝试使用
Vue.config.productionTip = false;
Vue.config.devtools = false;
上面这两种方式关闭警告,但对vue-router不好使,查看源码之后,发现开发模式必须会警告,求解决办法。
如果方便,请回复中文,谢谢。
Hello, your issue has been closed because it does not conform to our issue requirements. Please use the Issue Helper to create an issue - thank you!
遇到同样的问题
遇到同样的问题,请问解决了么
是不是 oldNameMap 缓存在内存中,当你再次登录的时候,如果没有刷新页面,会去比对你之前添加的oldNameMap, 但是你登录的时候要是刷新页面就不会有问题,有可能是这个问题。
name 同名了导致
@shapl
在vue-router中定义了相同的name,刚解决。http://www.xiaoyulive.top/m/?post=124 打开后404
遇到同样的问题,请问解决了么
same problem.
同样的情况

遇到同样的问题,请问解决了么
同问
same problem
?
解决方案:
export const createRouter = () => new Router({
mode: 'history',
base: process.env.BASE_URL,
routes
});
2.在需要使用addRoutes的地方,导入该函数
```
import router, { createRouter } from '@/router';
...
// router是从上面导入的,也就是 main.js 文件中 new Vue(options)中的router
router.matcher = createRouter().matcher;
router.addRoutes(routes);
```
@luichooy
我精简了一下
楼上正解,亲测有效
router.matcher = createRouter().matcher; 这个方法并不生效,有知道怎么回事吗
各位大佬们 match 并不生效 如何解决啊
我的微信1005922744
亲测有效,谢谢楼主
router.matcher = createRouter().matcher; 这个方法并不生效,有知道怎么回事吗
最后你解决了吗,可以发出来看看吗
我在退出的时候 通过window.loacation.href的方式解决了,那个方法我这边不行
router.matcher = createRouter().matcher; 这个方法并不生效,有知道怎么回事吗
你可能需要在你的环境中使用this.$router来代替router
Most helpful comment
@luichooy
我精简了一下
router.$addRoutes = (params) => {
router.matcher = new Router({mode: 'history'}).matcher
router.addRoutes(params)
}
this.$router.$addRoutes(routes)