做了个模块联邦的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没有问题。
关键代码如下:
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>
</>;
}