我已安装全局pouchdb-server
,我收到了有关graceful-fs
的消息:
$ npm install -g pouchdb-server
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: 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:
├─┬ pouchdb-server@1.2.1
│ ├─┬ couchdb-harness@0.1.6
│ │ └─┬ glob@3.1.21
│ │ └── graceful-fs@1.2.3
│ ├─┬ http-pouchdb@1.1.3
│ │ └─┬ pouchdb@5.4.5
│ │ └─┬ lie@3.0.4
│ │ └─┬ es3ify@0.2.2
│ │ └─┬ jstransform@11.0.3
│ │ └─┬ commoner@0.10.8
│ │ └── graceful-fs@4.1.11
│ ├─┬ pouchdb-adapter-node-websql@6.1.0
│ │ └─┬ websql@0.4.4
│ │ └─┬ sqlite3@3.1.8
│ │ └─┬ node-pre-gyp@0.6.31
│ │ ├─┬ tar@2.2.1
│ │ │ └─┬ fstream@1.0.10
│ │ │ └── graceful-fs@4.1.9
│ │ └─┬ tar-pack@3.3.0
│ │ └─┬ fstream@1.0.10
│ │ └── graceful-fs@4.1.9
│ └─┬ pouchdb-node@6.1.0
│ └─┬ leveldown@1.5.0
│ └─┬ prebuild@4.5.0
│ ├─┬ node-gyp@3.4.0
│ │ ├─┬ fstream@1.0.10
│ │ │ └── graceful-fs@4.1.11
│ │ └── graceful-fs@4.1.11
│ └─┬ node-ninja@1.0.2
│ └── graceful-fs@4.1.11
├─┬ webpack@1.13.1
│ ├─┬ enhanced-resolve@0.9.1
│ │ └── graceful-fs@4.1.4
│ └─┬ watchpack@0.2.9
│ └─┬ chokidar@1.5.1
│ └─┬ fsevents@1.0.12
│ └─┬ node-pre-gyp@0.6.25
│ └─┬ tar@2.2.1
│ └─┬ fstream@1.0.8
│ └── graceful-fs@4.1.3
我已经尝试npm update -g graceful-fs
但是这不起作用,升级作为全局包依赖的包的正确方法是什么?
请注意:我不想全局安装graceful-fs
包;相反,我想升级graceful-fs
包使用的pouchdb-server
的安装。
答案 0 :(得分:2)
您无法自行解决此问题,您需要要求软件包维护者升级其依赖项。
您所能做的最好的是运行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
版本。)
答案 1 :(得分:0)
来自here,
$ npm update minimatch
$ npm -v minimatch
2.10.1
$ npm install -g npm@3
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@3.10.5 /usr/local/lib/node_modules/npm
$ npm install -g minimatch@3.0.2
/usr/local/lib
└─┬ minimatch@3.0.2
└─┬ brace-expansion@1.1.6
├── balanced-match@0.4.2
└── concat-map@0.0.1
$ npm -v minimatch
3.10.5
对于graceful-fs尝试:
npm install -g graceful-fs graceful-fs@latest
答案 2 :(得分:0)
您是否需要在全球范围内安装pouchdb-server
?
请将其添加到packages.json
下的peerDependencies
,全局卸载,删除本地node_modules文件夹,然后从头开始安装。
通常建议不要全局安装 - 最好通过devDependencies
,peerDependencies
等安装软件包。
这是优选的,因为它避免了使用相同依赖性的其他包的副作用。此外,您可以将所有依赖项保留在版本控制中。