$ 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-installed1的方式退出?

最佳答案

您最有可能使用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/

10-11 06:13