【发布时间】:2021-02-03 04:11:02
【问题描述】:
我正在使用 single-spa 来创建我的应用程序。 我加载微前端的时候,没有使用SystemJS,如下:
export const runScript = async (url: string) => {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = url;
script.onload = resolve;
script.onerror = reject;
const firstScript = document.getElementsByTagName('script')[0];
(firstScript as any).parentNode.insertBefore(script, firstScript);
});
};
const loadApp = async (appPath: string) => {
try {
await runScript(`/${appPath}/index.js`);
console.log(appPath, '=', (window as any)[appPath]);
} catch {
console.log("load child app's javascript file error。");
}
return (window as any)[appPath];
};
singleSpa.registerApplication({
name: 'app1',
app: () => loadApp('app1'),
activeWhen: '/app1,
customProps: {
},
});
所以,我在 app1 的 webpack 配置中使用了libraryTarget:'window' 。
devServer: {
//...
libraryTarget:'window'
},
当我使用 webpack4 时它工作正常。
但是当我将webpack更新到webpack-5时,似乎出现了问题,webpack生成的输出代码无法为window对象设置正确的值。
webpack-4: works fine at webpack-4
webpack-5: nothing in the object
这是 webpack-5 的问题吗?
【问题讨论】:
标签: webpack micro-frontend single-spa webpack-5