1

我是 npm 和 node.js 的新手,在为 windows 安装 node.js、npm 和 git 之后,我正在尝试设置我的工作环境。我正在尝试全局安装 gulp 并作为开发依赖项。两次我都收到这些警告:

npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue

这导致 npm 取消安装。我正在运行 minimatch 3.0.2

C:\WINDOWS\system32>npm -v minimatch
3.10.10

但是 npm 仍然无法将其识别为已安装版本,因为它会不断推送警告。关于如何解决它的任何想法?

任何帮助表示赞赏。

4

2 回答 2

1

这给了 npm 版本而不是 minmatch 版本,

npm -v minimatch

转到 node_modules 并删除 minimatch 并在 packge.json 中确保 minmatch 版本为 ">=3.0.2" ,然后再试一次

或者,您可以使用全局安装最新版本

npm install -g minimatch@3.0.2
于 2017-04-20T09:16:37.923 回答
1

遇到同样的问题并在网上搜索了一下,我想在这里记录我的解释以供将来参考。

问题在于您安装的 minimatch 版本太低或过时。当显示这些警告时,npm 也不应该中止安装。

它是 gulp 间接依赖于 minimatch 的过时版本,可以使用验证npm ls -g minimatch(如果您在本地安装 gulp,请忽略-g)。输出的一部分应如下所示:

+-- gulp@3.9.1
| `-- vinyl-fs@0.3.14
|   +-- glob-stream@3.1.18
|   | +-- glob@4.5.3
|   | | `-- minimatch@2.0.10  deduped
|   | `-- minimatch@2.0.10
|   `-- glob-watcher@0.0.6
|     `-- gaze@0.5.2
|       `-- globule@0.1.0
|         +-- glob@3.1.21
|         | `-- minimatch@0.2.14  deduped
|         `-- minimatch@0.2.14

这段摘录解释了 gulp 3.9.1 依赖于vinyl-fs 0.3.14,它又依赖于 glob-stream 3.1.18 等等。您可以看到一些嵌套依赖项依赖于 minimatch 2.0.10,而另一些依赖于 minimatch 0.2.14,这正是 npm 在安装过程中抱怨的版本。

您可能无法自己解决此问题。您可以做的是联系具有过时依赖项的包的作者,在本例中为 glob、glob-stream 和 globule,并要求他们将其依赖项更新到较新的版本(或者自己动手并提交拉取请求,如果软件包是开源的)。

不过,这些警告很可能不会产生任何负面影响,因为目前还没有更新来解决这个问题,尽管有很多人积极使用和依赖 gulp。

于 2017-07-27T09:09:30.420 回答