【问题标题】:A problem when I use webpack-5's libraryTarget:window当我使用 webpack-5 的 libraryTarget:window 时出现问题
【发布时间】: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


    【解决方案1】:

    我个人将 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

    加载脚本时,我的应用程序在window 下很好 https://github.com/milobella/application-web/blob/master/portal/src/main.ts#L9

    【讨论】:

    • 谢谢,但是 React 应用程序使用 webpack-dev-server 从本地环境启动,似乎是 'webpack-dev-server' 的错误。
    • 对不起,是的,确实我的回答不相关,我尝试了 Angular 自定义 webpack 库在 libraryTarget 窗口中运行良好我发现你在 webpack-dev-server github.com/webpack/webpack-dev-server/issues/2783 我猜你创建的问题等待修复以在此帖子上分享它
    猜你喜欢
    • 2017-09-22
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2018-05-13
    • 2018-08-18
    • 1970-01-01
    相关资源
    最近更新 更多