我已经全局安装了 pouchdb-server
并且收到了关于 graceful-fs
的消息:
$ npm install -g pouchdb-server
npm WARN deprecated <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1d70747374707c697e755d2d332f332c29" rel="noreferrer noopener nofollow">[email protected]</a>: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a7c0d5c6c4c2c1d2cb8ac1d4e79689958994" rel="noreferrer noopener nofollow">[email protected]</a>: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
正如消息所述,该包将在 node > 7.0
(我使用的)中失败,因此我想知道如何执行升级。
如果我执行:
$ npm ls graceful-fs -g
我看到 graceful-fs
在多个全局包中使用,但唯一使用旧版本的是 `pouchdb-server:
├─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fd8d92889e95999fd08e988f8b988fbdccd3cfd3cc" rel="noreferrer noopener nofollow">[email protected]</a>
│ ├─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="47242832242f23256a2f263529223434077769766971" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6e0902010c2e5d405f405c5f" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └── <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="60071201030506150c4d061320514e524e53" rel="noreferrer noopener nofollow">[email protected]</a>
│ ├─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="08607c7c782578677d6b606c6a48392639263b" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ee9e819b8d868a8caedbc0dac0db" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cba7a2ae8bf8e5fbe5ff" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6b0e1858020d122b5b45594559" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e8829b9c9a89869b8e879a85a8d9d9c6d8c6db" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="24474b49494b4a415664140a15140a1c" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └── <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="57302536343231223b7a312417637966796666" rel="noreferrer noopener nofollow">[email protected]</a>
│ ├─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5d2d32283e35393f703c393c2d29382f7033323938702a383f2e2c311d6b736c736d" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c5b2a0a7b6b4a985f5ebf1ebf1" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6f1c1e03061b0a5c2f5c415e4157" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d9b7b6bdbcf4a9abbcf4bea0a999e9f7eff7eae8" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ ├─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c1b5a0b381f3eff3eff0" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="630510171106020e23524d534d5253" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ │ └── <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="12756073717774677e3f746152263c233c2b" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="74001506590415171f34475a475a44" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3f594c4b4d5a5e527f0e110f110e0f" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └── <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9dfaeffcfef8fbe8f1b0fbeedda9b3acb3a4" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a9d9c6dccac1cdcb84c7c6cdcce99f87988799" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fc90998a999098938b92bccdd2c9d2cc" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c8b8baadaabda1a4ac88fce6fde6f8" rel="noreferrer noopener nofollow">[email protected]</a>
│ ├─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="84eaebe0e1a9e3fdf4c4b7aab0aab4" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ ├─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d7b1a4a3a5b2b6ba97e6f9e7f9e6e7" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ │ └── <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="55322734363033203978332615617b647b6464" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └── <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="96f1e4f7f5f3f0e3fabbf0e5d6a2b8a7b8a7a7" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b1dfded5d49cdfd8dfdbd0f1809f819f83" rel="noreferrer noopener nofollow">[email protected]</a>
│ └── <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="53342132303635263f7e352013677d627d6262" rel="noreferrer noopener nofollow">[email protected]</a>
├─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="84f3e1e6f4e5e7efc4b5aab5b7aab5" rel="noreferrer noopener nofollow">[email protected]</a>
│ ├─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a7c2c9cfc6c9c4c2c38ad5c2d4c8cbd1c2e797899e8996" rel="noreferrer noopener nofollow">[email protected]</a>
│ │ └── <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c9aebba8aaacafbca5e4afba89fde7f8e7fd" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7f081e0b1c170f1e1c143f4f514d5146" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="34575c5b5f5d50554674051a011a05" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dbbda8beadbeb5afa89beaf5ebf5eae9" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7a14151e1f570a081f571d030a3a4a544c54484f" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e2968390a2d0ccd0ccd3" rel="noreferrer noopener nofollow">[email protected]</a>
│ └─┬ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="107663646275717d50213e203e28" rel="noreferrer noopener nofollow">[email protected]</a>
│ └── <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0b6c796a686e6d7e67266d784b3f253a2538" rel="noreferrer noopener nofollow">[email protected]</a>
我尝试过 npm update -g Graceful-fs
但这不起作用,升级作为全局包依赖项的包的正确方法是什么?
需要明确的是:我不想全局安装 graceful-fs
包;相反,我想升级 pouchdb-server
包使用的 graceful-fs
安装。
最佳答案
您无法自行修复此问题,您需要要求软件包维护者升级其依赖项。
您能做的最好的事情就是运行 npm update -g
(又名 npm upgrade -g
)以确保所有(在本例中为全局)包都升级到其依赖项规范允许的最新版本的依赖项。在各自的package.json
文件。
除此之外,无法升级到依赖项中的更高版本号,除非相关软件包本身被修改为依赖(允许依赖)其依赖包的更新版本。
包设计者指定依赖包之间允许的版本号范围,并且由于 semver (semantic versioning) 的规则,超出该范围通常是不安全的。 .
不幸的是,这意味着长时间没有更新其依赖项的包有被 Node.js/npm 的更改所淘汰的风险。
查看您的具体案例:
pouchdb-server
依赖于 "couchdb-harness": "*"
,它指定任何 couchdb-harness
版本满足依赖性(这是异常宽松的,可能以牺牲稳健性为代价)。
<强> couchdb-harness
是问题,但是:这取决于 "glob": "~3.1.21"
,这意味着它不会安装并与 glob
一起使用。软件包版本高于3.1.x
- 请参阅npm's docs on semver version specifications .
(最新的 glob
3.x
包本身依赖于 "minimatch": "~0.2.11"
,这解释了另一个警告,但是,如果 couchdb-harness
将其依赖项更新为最新,则该警告将会消失glob
版本。)
关于node.js - 如何在 npm 中升级全局包的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41214381/