目录

微前端模式下子应用的路由懒加载

微前端模式下子应用的路由懒加载

场景:

基于qiankun的微前端博客系统,下面两个功能模块是使用微前端的方式进行加载的。

https://i-blog.csdnimg.cn/blog_migrate/47e52a20f535542d04a76e1793a9296f.png

遇到的问题:

在本地开发环境中,子应用都能正常加载进来。但是部署到线上环境中,博客主页子应用正常运行(React版)博客管理子应用(vue版)可以加载进来,但是无法解析加载进来的文件,加载chunk包失败,下图中的输出就是子应用中的代码,但是js文件无法加载到。

https://i-blog.csdnimg.cn/blog_migrate/48d0d286c2a400c032ebd8c37b7b0f48.png

查看打包配置和打包结果

https://i-blog.csdnimg.cn/blog_migrate/802e9df5702a781e164cc3f507d79413.png

https://i-blog.csdnimg.cn/blog_migrate/05c633af2bf7aa10a55a474abc63a6a8.png

这些都是没有问题的,线上nginx配置

https://i-blog.csdnimg.cn/blog_migrate/a0b2bcfa13f3fdd27311eaf4c88d32ab.png

出现原因

这些都是没有问题的,后来想到博客管理的页面都是使用的路由懒加载,这些文件在加载的时候路径发生错误,下图中0.xx.js和1.xx.js就是动态加载的路由组件,从请求的url中看出显然请求路径少了一层/blogMannage。

https://i-blog.csdnimg.cn/blog_migrate/6959e3ef3482fd023f6b86a5802ef856.png

https://i-blog.csdnimg.cn/blog_migrate/eee4db6c8cd4e8d49a2c5ece2cd49e26.png

解决方案

1.最简单的方式就是不适用路由的懒加载功能,这样在webpack打包的时候就会将包打到一起,不会出现分包加载路径出错的问题。

2.手动在打包好之后的js文件中找到动态加载路由的地方,将切换的地址手动加一层/blogMannage,如下图

https://i-blog.csdnimg.cn/blog_migrate/55ecaa440361f2da928e83365223d828.png

3.我的优化想法是每次打包都要手动修改打包好的文件,这显然不方便,有没有一种直接修改webpack配置的方式,将所有动态切换路由的地方都自动加上自己想要的路径。在webpack官方文档中也没有找到类似的解决办法 求大佬帮助