问题
在基于vite的qiankun框架的使用过程中,发现我可以通过基台应用跳转到目标子应用,但是对于这个目标子应用本身的路由却失效,提示说找不到相关地址,但是在子应用中的路由确实是注册了的。头疼了很久。


分析
检查元素后,可以明显发现我本身基台应用中用于存放子应用的容器不见了,这就是问题所在,路由跳转后页面变化了,原来的容器存在在“/music”中,在“/music/dog”中是没有任何东西的。
解决问题
其实查看官方文档也有这样的问题的(常见问题 - qiankun (umijs.org))如下图,只是需要将地址规则改一下,使得对于“/music”开头的所有路由都跳转到包含容器的组件里就好了。当然这个解决文档中还是存在问题的,因为vue-router在升级到4版本后就废弃了通配符“*”,需要参考官方文档改一改的(带参数的动态路由匹配 | Vue Router (vuejs.org))。
//原来的
{
path:'/music',
name:'music',
component:()=>import("../layout/index.vue")
}
//更改后的
{
path:'/music/:pathMatch(.*)*',
name:'music',
component:()=>import("../layout/index.vue")
}