npm audit fix不起作用

13

我认为这是一个相当基础的问题,但我已经卡住了一段时间:

我正在尝试使用npm audit fix来清理一个旧的代码库,因为该库存在许多安全漏洞。当我运行时,我看到输出如下:

fixed 3534 of 3576 vulnerabilities in 1926 scanned packages
  42 vulnerabilities required manual review and could not be updated

然而,我发现`package-lock.json`文件中没有任何更改。因此,似乎审计并没有实际执行任何操作?当我运行`npm install`时,我会再次看到以下内容:
found 3576 vulnerabilities (3550 low, 10 moderate, 14 high, 2 critical)
  run `npm audit fix` to fix them, or `npm audit` for details

这是否意味着审计过程未能解决任何这些问题?如果是这样,我应该如何解决这些问题?


你有哪些依赖关系?例如,当我在Windows Kali模拟器中使用nexe作为依赖项时,它总是会显示漏洞。 - The Bomb Squad
但是如果你说这个问题持续了半年,我假设你更换了环境并重新安装了Node.js,并将文件复制到新文件夹中,删除了旧文件夹,重新安装了依赖项... 如果是这种情况,那么这非常有趣。 - The Bomb Squad
1个回答

22

问题原因:这似乎是npm中已知的一个bug,目前还没有人公开找到原因,至少我没有找到。但是你可以在当前npm问题跟踪器中的问题中看到它被报告,该问题链接到归档的npm问题跟踪器中的问题

如何修复:当我在npm中遇到这种行为时,我会执行以下操作:

$ rm -rf node_modules package-lock.json shrinkwrap.json npm-shrinkwrap.json
$ npm install

然而,我认为这并不总是有效的。但如果您还没有尝试过,那么值得一试。@Kshewengger建议更新npm也是一个好主意。他们建议先尝试npm install -g npm,但如果这不起作用,并且如果您不介意更新package-lock.json文件格式和其他更改,您也可以尝试npm install -g npm@7。截至本文撰写时,npm install -g npm将会给您npm@6.14.9,而npm install -g npm@7则会给您npm@7.0.15


1
@BruceK,您能否接受这个答案呢? - thisissami
@YanickRochon 正如答案中所说:“我认为那并不总是有效的。”请按照答案的指示更新npm。 - Trott
1
@YanickRochon 哎呀,就像答案中所说的:“值得一试。”它不能在所有情况下都起作用是可以预料的。似乎在大多数情况下都有效,但绝对不是所有情况的解决方法。 - Trott
现在问题已经修复,“更新npm”可能应该是主要建议,高于解决方法。话虽如此,即使使用最新的npm(截至本文写作时为8.17.0),我仍然有时需要使用解决方法。 - T.J. Crowder

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