Webpack5把微前端qiankun的配置文件tree sharking了

Others 2022-10-17 08:34:10 2022-10-17 08:34:10 849 次浏览

network面板通过基座加载子应用时候,出现了一个js文件404

这里面很蹊跷,因为子应用单独可以启动,子应用被基座家加载时候只有一个js文件404了,而且是一个异步加载的js,那么可以判断,肯定是加载逻辑这块出了问题

在子应用中调试,打开public-path文件发现没有运行

核心问题是:当时发现子应用的__webpack_publicPath__这个变量没有被修改,所以造成了请求的host不对,异步加载的js文件404了
文件被webpack5给tree sharking了
package.json中添加的sideEffects字段

"sideEffects":["src/public-path.js"]


注:
if (window.__POWERED_BY_QIANKUN__) {
    __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
这个代码在上下文中其实是没有被引用的,只有在代码编译后,异步的代码js文件被加载时才能用到__webpack_public_path__这个变量,所以就被清除了代码

那么为了解决这个问题,我们需要在 package.json 中添加 "sideEffects" 属性