依赖关系共享的NPM依赖关系

在npm 3.3.12(节点4.2.2)上,发生以下事情:

我在一个项目中运行npm install ,其中我的项目中的某个依赖关系也是其他依赖关系之一的依赖关系。 例如:

  • 我的项目依赖于PackageA和PackageB
  • PackageA也依赖于PackageB
  • 我的项目和PackageA都依赖于PackageB的相同版本

然后,我在我的项目中运行npm update 。 NPM输出列表:

 PackageB@xxx node_modules/PackageB -> node_modules/PackageA/node_modules/PackageB 

因此,然后突然,PackageB不在我的项目的node_modules(仅在PackageA下的node_modules中),并且项目文件中的require(“PackageB”)失败。

是什么原因造成的,我怎样才能最好的避免这个问题呢?

这是一个错误,在NPM 3.4.1中修复:

https://github.com/npm/npm/issues/10446