1

在我的模块联合设置中,我有一个使用一些远程应用程序的主机应用程序。它们都作为单例共享 Angular 框架依赖项。这是主机的 webpack.config.json 文件:

new ModuleFederationPlugin({
  remotes: {
    mf1: "mf1@http://localhost:3000/remoteEntry.js",
    buy: 'buy@http://localhost:3002/remoteEntry.js',
    logo: 'logo@http://localhost:3003/remoteEntry.js'
  },

  shared: {
    "@angular/core": { singleton: true, },
    "@angular/common": { singleton: true, },
    "@angular/router": { singleton: true, },
  },
}),

在主机和远程的内部package.json,Angular 版本都被定义为^11.0.0. 实际安装的版本是:host: 11.0.0、remote 11.0.9.:。由于内部的定义package.json和根据语义版本兼容的实际版本,我希望 webpack 只加载最高兼容的 Angular 版本(即11.0.9)一次。相反,我收到警告说Unsatisfied version 11.0.9 of shared singleton module @angular/core (required =11.0.0)。从何=11.0.0而来?为什么不承认 webpack 版本应该兼容?

4

1 回答 1

0

我真的会requiredVersion在插件配置中指定 ,而不是仅仅依赖于从您的package.json. 问题是它不仅会读取您的 root package.json,它还会从您自己也需要/导入package.json的任何模块中读取您正在使用的任何模块。这意味着您最终会得到一个包含许多不同潜在版本范围的实际共享“清单”,这可能会导致您看到的那种错误。node_modules@angular/core

于 2021-02-21T01:41:31.933 回答