Webpack Module Federation未满足版本11.x.@angular/common的共享单例模块X (



我正试图让我相当复杂的单片应用程序与模块联邦工作。我的webpack配置是这样的

plugins: [
new ModuleFederationPlugin({
remotes: {
"mfe1": "mfe1@http://localhost:3000/remoteEntry.js",
},
shared: {
"@angular/core": { singleton: true, strictVersion: true },
"@angular/common": { singleton: true, strictVersion: true },
"@angular/router": { singleton: true, strictVersion: true },
...sharedMappings.getDescriptors()
}
}),
sharedMappings.getPlugin(),
],

Shared在Micro Frontend端是相同的。当我尝试运行应用程序时,我得到:

错误:未满足11.2.1版本的共享单例模块@angular/common (required ^7.2.0)

在那之前,我得到了一个类似的错误信息,但为角/核心。我通过重新运行yarn和修复库根据不同的angular/core版本产生的所有警告来修复这个问题。

但与错误fpr角/共同我卡住了。我不知道如何找出哪个库可能会产生这个错误。

您可能应该在每个共享项上指定requiredVersion。如果你没有指定它,webpack将尝试从你的主包中确定版本。也可以从node_modules中使用angular库的NPM包中获取。

当你导入一个使用angular的第三方模块时,它会扫描这个包。Json,并在此基础上添加另一个条目版本范围映射。这可能会导致不必要的行为,也可能是你所看到的原因。

现在你已经有了覆盖不同包版本的singleton: true。一种选择是在所有微前端都有相同版本的包,第二种选择是你可以稍微改变shared语法。试试这样做:shared: [ "@angular/core", "@angular/common", "@angular/router", ...sharedMappings.getDescriptors() ]

最新更新