NPM-AUDIT发现高漏洞,我该怎么办?

14

npm audit 运行在我的项目上,给我得到了以下结果:

高风险 命令注入
依赖于 @angular-devkit/build-angular [dev]

路径 @angular-devkit/build-angular > @ngtools/webpack > tree-kill

更多信息 https://npmjs.com/advisories/1432

高风险 命令注入

包名 tree-kill

已修复版本 >=1.2.2

依赖于 @angular-devkit/build-angular [dev]

路径 @angular-devkit/build-angular > tree-kill

更多信息 https://npmjs.com/advisories/1432

Tree-kill 需要被更新,但它是 Angular 的依赖项,而不是我的。那么怎么办呢?需要等待 Angular 团队更新其自己的 package.json 到 tree-kill 的新版本吗?

8个回答

15

您可以在等待包@angular-devkit/build-angular的新版本时解决此问题。

只需执行以下步骤:

  1. 通过添加正确版本的tree-kill软件包,更新您的package.json文件中的resolutions部分:
"resolutions": {
  "tree-kill": "1.2.2"
}
  1. 运行以下命令更新您的package-lock.json文件:
npx npm-force-resolutions
  1. 重新安装项目中的NPM包:
rm -r node_modules
npm install

运行npm audit检查您的项目是否不再具有此问题。 别忘了提交修改后的文件package.jsonpackage-lock.json

有关NPM 强制解决方案的更多信息。


9

今天我也遇到了同样的问题,我通过以下方法解决:

  1. 从node_modules文件夹中删除tree-kill包。
  2. 删除package-lock.json文件。
  3. 进入node_modules文件夹中的@angular-devkit/build-angular文件夹并编辑package.json文件; 将tree-kill版本从1.2.1更改为1.2.2
  4. 进入node_modules文件夹中的@ngtools/webpack文件夹,执行与步骤3相同的操作。

完成以上步骤后运行npm install命令即可。


1
那么通过这个修复,我必须将 node_modules 文件夹与 Git 一起保留,对吗? - Loki
我不确定我是否理解了你的问题,但是在新安装后,你需要提交新更改。 - saleem
2
手动编辑依赖关系并不是一个好主意,因为重新安装项目将会带来问题。 - Nemus
@Loki 不要!node_modules 是所有依赖项的二进制文件的编译集合。就像 Maven 的 .m2/repository 文件夹一样。代码库不需要它,而且 NPM 应该为每个克隆仓库的人解决依赖关系。这就是为什么保留 package.json(以及在运行依赖扫描器时保留 package-lock,比如在 GitHub 上)。此外,创建一个不受支持的依赖项的修改似乎会导致灾难,一旦你更新 Angular,在其他地方克隆它等等。 - Alfabravo

3
我也遇到了这个问题,经过一些调查研究,我找到了一些解决方法:NPM throws error on "audit fix" - Configured registry is not supported。当然,这是关于其他问题的,但是通过适应那里提供的解决方案,我的问题得到了解决。
所以:
  • 删除tree-kill的node_modules文件夹
  • 像tree-kill模块一样编辑package-lock.json文件。
  • 不要忘记在最后运行npm install
希望我表述足够清晰明了。

如果在第一步中删除了tree-kill的node_modules文件夹时,package-lock.json也应该被删除,那么在第二步中如何编辑package-lock.json呢? - Mauricio Martinez

2

1
将以下代码添加到package.json文件中。
"resolutions": {
"tree-kill":"1.2.2"
}

删除所有节点模块:

rm -r node_modules

更新 package-lock.json 文件至新版本 1.2.2,具体如下:

npx npm-force-resolutions

现在安装节点模块:
npm install

这对我来说有效。


0
  1. 从node_modules文件夹中删除tree-kill包和package-lock.json文件。

  2. 在node_modules文件夹中找到@angular-devkit/build-angular文件夹并编辑package.json文件;将tree-kill版本从1.2.1更改为1.2.2。
    在node_modules文件夹中找到@ngtools/webpack并编辑package.json文件;将tree-kill版本从1.2.1更改为1.2.2。

  3. 运行npm install命令。

0

删除 node_modules 并重新安装可以解决问题。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

0

请在 package.json 中将 @angular-devkit/build-angular 版本更新为以下版本:

"@angular-devkit/build-angular": "0.13.10"

对我而言,它运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接