$ npm install
[email protected] /Users/antpaw/my_module
├── [email protected]
└── UNMET PEER DEPENDENCY request@^2.74.0
npm WARN [email protected] requires a peer of request@^2.74.0 but none was installed.
我不明白这怎么可能只是警告。如果未安装“请求”,我的应用程序将崩溃,这对我的应用程序来说是一个很大的问题。
如果未满足对等依赖项或是否有类似
npm install
命令的内容将以1
退出的方式,如何使npm do-i-have-everything-i-need-installed
以1
的方式退出? 最佳答案
您最有可能使用npm @ 3(版本3)。
如文档中所指定,在大多数情况下,npm版本1和2用于安装peerDependencies
。 Npm版本3更改了此行为,不再安装peerDependencies
,而是在未安装peerDependencies
时发出警告。
进行更改的原因主要是为了避免在使用peerDependencies
或大多数情况下错误使用peerDependencies
时出现依赖 hell 。 npm Github上有许多关于peerDependencies
的问题,例如this one解释了一些问题,并导致了不再安装peerDependencies
的解决方案。
如果在未安装request
的情况下应用程序崩溃,则您最需要它。目前,在npm环境中,dependencies
是您require()
的软件包,devDependencies
是您require()
的软件包,仅用于开发,测试等。peerDependencies
最初旨在解决软件包的问题,这些软件包主要是其他框架或库的“插件”,旨在与其他“主机”软件包一起使用,即使它们没有直接使用或不需要“主机”软件包也是如此。
例如,Grunt插件应与Grunt一起使用,但不能与require('grunt');
一起使用。将grunt
添加为dependencies
将导致该软件包的新下载副本将永远不会被使用。即使某些插件直接依赖于'host'软件包并在dependencies
中指定'host'软件包,也会导致'host'软件包的多个副本。peerDependencies
是一种表示插入“主机”软件包版本的软件包的方法,因此,如果安装此软件包,则还应手动安装此其他软件包 。
这就是您当前的行为,正在安装应用程序,将request
列为peerDependencies
,因此您应该先安装它才能使其工作并删除警告,否则,您需要转到经典的dependencies
。
关于javascript - npm对等依赖检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39027429/