首页 > 解决方案 > 修复 NPM 重复问题,两个包依赖相同的 peerDependency 但在不同的版本级别与 CRA React

问题描述

我相信我有重复的问题,但我正在努力解决它。在我的反应项目中,我有两个包(A 和 B),它们都在其 peerDependencies 中使用另一个包(C)。

当我构建只安装了 A 和 C 的项目时,一切都很好。然后当我 npm install package B 并执行 npm run build 时,突然间我有至少包 A 的重复块,并且我的构建大小从 10MB 变为 40MB。哎呀。

我跑了npm dedupe,什么都没有。

我复制了我的项目,npm eject并将其添加resolve.alias到 webpack 配置中。再次,什么都没有。

我的 package.json 有什么可以改变的,以便其他两个包都满意吗?

共享包是^4.11.0

在其他包的对等依赖项中

包 A 是^4.0.1 包 B 是^4.9.10

根据我对 npm 版本控制的了解......这应该没问题吧?

独立地,这两个包都可以正常工作,但是一旦您尝试将它们一起使用,这就是重复发生的地方。我什至不能确定这是一个重复问题,但是我运行了 source-map-explorer 并且它显示了重复问题,所以我只能假设这是问题所在,但感觉就像我所有修复重复问题的尝试都没有什么都不做。

这就是很多开发者谈论的依赖地狱吗?

标签: reactjsnpmwebpackduplicatesbundle

解决方案


所以,我找到了导致重复的原因,但我担心它带来的问题多于答案。

我的项目使用可加载组件。我一直在对路由级别的所有内容进行代码拆分,因此我的所有组件都是逐页加载的。

导致重复错误的两个文件不包括从有问题的包之一的导入。我项目中的每个其他页面都会在其中导入该包。当我在不使用可加载的情况下导入这两个页面时,重复就消失了。

我无法真正解释为什么会发生这种情况,但我想当它没有导入文件时,不知何故可加载会创建我的一个包的两个不同版本?所以一个块有一个版本的包,而我的主块有一个不同的包?


推荐阅读