首页 > 解决方案 > 如何排除不安全的 package.json 临时依赖项?

问题描述

我有一个package.json给出大量的安全警告。查看第一个关键项目,我看到它的open@0.0.5已经五年没有更新了。查看npm ll它包含在npm@6.5.0中,我使用的是大约两周前更新的最新版本。

我想删除不安全的依赖项。在 Java 世界中,maven 包管理器允许您排除某些传递依赖项。理想情况下,使用npm或另一个节点包管理器,我应该能够排除存在漏洞的依赖项。然后我可以重新测试我的应用程序是否正常工作,并且看不到任何安全错误。有没有办法从我的 package.json 中快速排除任何有安全漏洞的东西?如果没有办法做到这一点,可以采取哪些方法来确保我的应用程序不使用不安全的包?

更新:虽然"npm": "^6.5.0"在 package.json 中指定了,但我使用较旧的 npm 构建它,该 npm 解决了上面提到的关键问题。我解决了所有问题./node_modules/.bin/npm audit fix --force

标签: node.jsnpmpackage.json

解决方案


根据定义,您不能排除您正在使用的依赖项所依赖的包。换句话说,如果您需要 package A,并且 packageA声称它依赖于 package B,那么删除 packageB将导致A完全停止工作或开始出现异常行为。

不幸的是,这确实发生了,您的选择包括:

  1. 忽略安全警告。
  2. A用其他东西替换包(在某些情况下适用,在其他情况下不适用)。
  3. 要求包的维护者A升级B他们所依赖的包的版本,可能自己打开一个拉取请求。

不过,在您的情况下,我不确定您的调查是否已经完成 - 我open在 npm 的依赖项列表中没有看到。可能值得废弃你的 node_modules 并重新运行 npm install,然后再次检查以查看谁在使用open.


推荐阅读