Node.js 为什么npm有时使用与依赖关系树中其他地方不同的版本,而不是安装所需的模块?

Node.js 为什么npm有时使用与依赖关系树中其他地方不同的版本,而不是安装所需的模块?,node.js,npm,package-managers,Node.js,Npm,Package Managers,我很清楚npm依赖项是树形的,两个不同的模块可以同时加载一个依赖项的两个不同版本 因此,当我看到npm错误时,如: npm WARN unmet dependency /somedir/node_modules/gulp-browserify /node_modules/browserify/node_modules/module-deps requires stream-combiner@'~0.1.0' but will load /somedir/node_modules /gulp-b

我很清楚npm依赖项是树形的,两个不同的模块可以同时加载一个依赖项的两个不同版本

因此,当我看到npm错误时,如:

npm WARN unmet dependency /somedir/node_modules/gulp-browserify
/node_modules/browserify/node_modules/module-deps 
requires stream-combiner@'~0.1.0' but will load /somedir/node_modules
/gulp-browserify/node_modules/browserify/node_modules/stream-combiner, 
which is version 0.0.4
为什么npm不在module_deps/node_modules/stream combiner下面安装module deps依赖项流组合器@'~0.1.0'


或者,更一般地说:为什么npm有时不在需要的地方安装模块,而是在该模块上使用依赖关系树中其他地方的不同版本?

这在我看来像个bug:p你真的想知道bug发生的原因吗?这可能会有帮助:。。。尽管他们总是说只有软件包具有相同的版本时才共享。相关的复制?:有没有命令可以运行来复制它?我刚刚运行了npm install gulp browserify,我得到了两个不同版本的stream combiner。@Kenan它来自一个很长的npm收缩包装文件,如果我没有得到任何答案,我会花时间把它删减,但我想大多数使用npm的人以前都见过。