我正在使用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生成的输出代码无法将正确的值设置为窗口对象。
webpack-4:works fine at webpack-4
webpack-5:nothing in the object
这是webpack五号的问题吗?
发布于 2020-10-24 15:15:45
我个人将webpack5用于我的单spa-angular组件。我有umd作为libraryTarget
"customWebpackConfig": {
"path": "./extra-webpack.config.js",
"libraryName": "mylib",
"libraryTarget": "umd"
}https://github.com/milobella/application-web/blob/master/spa-menu/angular.json#L36-L37
当加载脚本https://github.com/milobella/application-web/blob/master/portal/src/main.ts#L9时,我的应用程序在window下
https://stackoverflow.com/questions/64443344
复制相似问题