如何解决模块联合 - 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 举报,一经查实,本站将立刻删除。