umijs / qiankun

📦 🚀 Blazing fast, simple and complete solution for micro frontends.
https://qiankun.umijs.org
MIT License
15.61k stars 2k forks source link

子应用 前端资源更新时, 请求老的资源,错误无法捕获 #2895

Open yaolinhong opened 5 months ago

yaolinhong commented 5 months ago

场景: 前端资源更新时 只有css更新,css哈希值变化 老的css资源无法请求到的场景

调用栈中 定位到 错误是在forStrictSandbox rawHeadAppendChild.call(mountDom, stylesheetElement);

控制台有error

GET http://saas-test2.raritag.cn/sub-app-materials-inventory/css/materialsList.4663284c.css net::ERR_ABORTED 404 (Not Found)

https://github.dev/umijs/qiankun/blob/cbd6cc064624be31a5f5f972d37075471ac7b15a/src/sandbox/patchers/dynamicAppend/forStrictSandbox.ts

问题: 主应用、子应用中 addGlobalUncaughtErrorHandler 无法捕获到错误

image

bravepg commented 5 months ago

addGlobalUncaughtErrorHandler 里面的回调函数没有被执行吗?

如果你说的没有被捕获指的是「控制台中看到浏览器的错误输出」,那么你需要在回调函数里使用 event.preventDefault() 来阻止浏览器的默认行为。

qiufeng2016 commented 3 weeks ago

也是遇到这种问题,请求老资源js不存在,导致页面无法正常显示,这种问题有什么解决方案么?(除了调整部署方案)