使用XSwitch代理微前端基座项目,如何保持微应用热更新

公司采用微前端方式已经有段时间了,一直有个开发问题没解决。当在基座页面使用XSwitch拦截相关 js 和 css 文件到本地的微应用项目时,热更新就会失效,以 ice3 项目为例:

看到这种报错其实就是webSocket服务器没有正确连接到微应用上去,我们只要想办法指定下开发环境的webSocket服务器 URL 就好了。还是以 ice3 为例:

ice3 是基于 webpack5 的,其实官网有介绍

大概这么配置就好了,我们只更改hostname就可以了,其他保持不动,当然你如果是基于 umi 的,就找 umi 修改websocketurl的方式,反正大同小异
指定好后重启下微应用,发现不报错了
但是当你修改一下后又报错了
这个报错是因为hot-update.json没有被正确的请求到,我们打开浏览器控制台,找到网络可以看到请求
此时你可以直接使用XSwitch拦截这个请求重定向到本地微应用去,例如:
当然 umi 的也可以用其他方式实现,比如修改SOCKET_SERVER这个环境变量等
当这一切的一切都改好后,就不会报错了,此时你可能可以热更新了,但是有些情况下,还是不能热更新

那是因为微应用的react被externals出去了,统一使用了基座项目里的 react,而基座的 react 往往使用了生产版本的 react,我们知道,react 的热更新是需要开发版本的 react 和 React Developer Tools 这个浏览器插件的,这两者缺一不可,不然是无法热更新的。所以此时的解决方法:

  1. 部署一个基于开发版的 react 的基座项目
  2. 不要在开发的时候把微应用的 react externals出去
如果还有更好的方法,可以留言哦,大家一起集思广益
相关推荐
毕设源码-朱学姐2 分钟前
【开题答辩全过程】以 基于web的生鲜农产品信息管理系统为例,包含答辩的问题和答案
前端
Hello.Reader2 分钟前
Flink 2.0 从 flink-conf.yaml 到 config.yaml 的正确打开方式(含迁移与最佳实践)
java·前端·flink
晚霞的不甘4 分钟前
Flutter for OpenHarmony:注入灵魂:购物车的数据驱动与状态管理实战
android·前端·javascript·flutter·前端框架
skywalk81639 分钟前
cbsd的clonos/control-pane web管理页面一直闪烁和网页打开显示500error 的问题解决(500error问题未解决)
服务器·前端·freebsd·cbsd
weixin_4365250712 分钟前
若依多租户版 - modules中创建子模块
java·服务器·前端
好奇的菜鸟14 分钟前
使用 Vite 快速创建 React + TypeScript 项目全记录
前端·react.js·typescript
*小雪15 分钟前
nvm的安装与管理和npm audit的报错解决
前端·npm·node.js
Marshmallowc17 分钟前
React useState 数据不同步?深度解析无限滚动中的“闭包陷阱”与异步更新丢失问题
前端·javascript·react.js·闭包·fiber架构
某柚啊18 分钟前
解决 minimatch 类型报错问题
前端·webpack·npm
前端 贾公子20 分钟前
npm 发包配置双重身份验证
前端·javascript·微信小程序·小程序·github