主应用是vue,使用vue-cli构建,子应用是react,使用create-react-app构建。本地开发中主应用和子应用一起启动,发现子应用无法热更新。
主应用端口号:8080
子应用端口号:3000
原因分析
- 子应用的热更新包是在3000端口下,而子应用嵌入主应用后请求的是主应用的端口8080,导致子应用拿不到.hot-update.json文件,进而导致无法进行热更新。
- 查看源码发现,热更新时路径这里使用/,会直接将请求发送到当前url下,也就是主应用,主应用没有这个文件,无法热更新。
解决方案
将webpack publicPath改为子应用的端口即可。如下:
修改后,热更新路径正常,功能恢复。如下: