微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

模块联合 - webpack 从 package.json 读取错误的依赖版本

如何解决模块联合 - webpack 从 package.json 读取错误的依赖版本

在我的模块联合设置中,我有一个主机应用程序,它使用一些远程应用程序。它们都作为单例共享 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。实际安装的版本是:主机:11.0.0,远程: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 版本应该兼容?

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。