在我们的项目中,有两个不同的npm软件包依赖项A
和B
。
A
依赖于库C@^4.0.0
,而B
需要C@^5.0.0
。 A
是前面添加的,因此在文件结构中,我们有node_modules\C
的{{1}}和"version": "4.1.0"
的{{1}}。 C根本不在package.json中,仅由这些依赖项使用。
B实际上在C语言中使用了一些重大更改,不适用于第4版。
这完全是软件包管理的预期和正常情况,实质上是软件包的全部用途。
构建一个包的Webpack会导入两个模块,一个模块A所需,一个B所需。它为一位开发人员和一台构建机器完成。
但是由于某种原因,开发人员的机器(我的)在这两种情况下,webpack都使用node_modules\B\node_modules\C
模块,从而导致稍后出现运行时错误(就像在这种情况下一样,讨厌的小众环境也不是很明显的)半小时找出问题在于版本依赖性。
在所有计算机上,节点(v8.12.0),npm(6.4.1)和webpack软件包(3.8.1)的版本均相同。我已经完成删除"version": "5.1.0"
的工作,删除了node_modules,并node_modules\C
进行了多次检查。还有什么可以与众不同的,我应该考虑什么?
我只是不介意(捆绑软件是在构建服务器上正确构建的),但是我想找出问题所在,以防它破坏了我开发中的其他功能。