webpack5 模块联邦相互引用的问题?

做了个模块联邦的demo,有A、B两个应用,A应用导出A的Example1组件,B应用导出B的Example1组件,现在单独A中使用B的Example1没有问题,在B中使用A的Example1也没有问题。

但如果在A中使用B的Example1的时候,B的Example1中有用到了A的Example1,A应用就会报错。B的App自己此时用自己的Example1没有问题。

image.png

关键代码如下:
application-a

     name: 'application_a',
      library: { type: 'var', name: 'application_a' },
      filename: 'remoteEntry.js',
      exposes: {
        './Example1': './src/compments/Example1',
      },

      remotes: {
        'application_b': 'application_b'
      },
const Example1 = React.lazy(() => import('application_b/Example2'));
function App() {
  return (
    <div>
      <Example2 />
    </div>
  );
}

application-b

      name: 'application_b',
      library: { type: 'var', name: 'application_b' },
      filename: 'remoteEntry.js',
      exposes: {
        './Example2': './src/compments/Example2',
      },
      remotes: {
        'application_a': 'application_a',
      },

app

import Example2 from './compments/Example2';
function App() {
  return (
    <div>
      <h3>hello application B</h3>
      <Example2></Example2>
    </div>
  );
}

compments/Example2

import Example1 from 'application_a/Example1'

export default function Example2() {
  return <>
  <Example1></Example1>
  </>;
}
阅读 1.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进