问题描述
假设我有以下模块联合设置:
new ModuleFederationPlugin({
name: 'shell',filename: 'shellDeFinition.js',shared: {
'my-shared-lib': { singleton: true,eager: true,requiredVersion: '^1.0.0' }
},})
这让我与遥控器共享如下导入:
import { myThing } from 'my-shared-lib';
import myThing from 'my-shared-lib/things';
使用上述设置执行此操作似乎会在主机和任何遥控器中创建模块的单独实例,这可能是可以理解的,因为我们在技术上并未共享深度导入。但是,有没有办法让模块联合这样做?
解决方法
您应该能够将深度导入为:
shared: {
'my-shared-lib': { singleton: true,eager: true,requiredVersion: '^1.0.0' }
'my-shared-lib/things': { singleton: true,requiredVersion: '^1.0.0' }
}
它们仍然是两个独立的块,但将由多个远程/主机共享。