如何修复没有列在 package.json 中的 package-lock. json 中的易受攻击的 npm 包?

Github 告诉我,在我的包锁定中有一个依赖项。Json 文件很脆弱,已经过时了。问题是,如果执行 npm installnpm update,它们都不会更新包锁定中的依赖项。Json 文件。

我已经做了很多这方面的谷歌,以及删除文件和做 npm install

如果有人能帮忙解决这个问题,我将非常感激。问题中的包是 Hoek,实际上我的 package.json 文件中没有这个包。

非常感谢。

80379 次浏览

这听起来像是 Hoek 是您的一个依赖项的依赖项(因此,您的 package.json 中的一个包需要它来自它自己的 package.json)。

您已经尝试过删除/重新安装和更新项目依赖项,但是没有成功,因此看起来问题中的包依赖项具有指定的显式版本或最大版本。

如果没有看到每个依赖项的 package.json,就很难进一步建议如何强制更新。

编辑: 为了帮助您识别哪些包使用哪些依赖项,您可以使用 NPM 的 ls命令: < a href = “ https://docs.npmjs.com/cli/ls”rel = “ norefrer”> https://docs.npmjs.com/cli/ls

例如,要查看哪些包正在使用 Hoek: npm ls hoek

编辑2: 正如 Ulysse BN 正确地指出的那样,如果您有 NPM 版本6或更高版本,则可以使用 npm audit fix请求 NPM 尝试为您修复漏洞。

编辑3: 阅读这篇文章的读者也应该看看下面 JBallin 的回答。它扩展了我在这里给出的信息,并且(在我看来)是一个更加结构化的答案,能够更好地回答 OP 的问题。然而,如果你想要一个快速的解决方案,这个答案应该足够了。

用途:

NPM 我希望

Npm 将安装最新版本的 hoek 并更新 package.lock.json。

我发现这个问题是因为运行 npm 的服务器上有一个旧版本的 npm-package-lock。Json 只支持更新的版本。

如果有 npm@6或更高版本,则可以使用 npm audit fix解决安全问题。

您尝试过这样做吗: 转到您的项目根目录,删除 package-lock.json文件,node_modules.cache文件夹,然后 npm install

TLDR: 使用 npm i $PARENT_PKG_NAME更新父包。


注意

在更新依赖项时,应该检查 CHANGELOG 以查看是否有任何破坏性更改。

诊断

npm audit将显示两个易受攻击的软件包(请注意,您将需要一个软件包锁定。Json 文件,因此需要运行 npm i) ,以及它是(如果适用的话)依赖项的包。注意,还可以使用 npm ls $CHILD_PKG_NAME查看其父依赖项。

快速修复尝试

npm audit fixnpm audit fix --force值得一试,但有时需要手动修复(见下文)。

手动修理

很可能父包已经修复了它们的依赖关系(您可以通过访问它们的 GitHub 并查看最近的提交来验证这一点——或者只是看看这是否修复了它) ,所以您可以运行 npm i $PARENT_PKG_NAME @$NEW_VERSION,它将更新您的包锁定。Json.

如果父级没有修复漏洞

如果维护人员似乎没有响应,您可以考虑使用替代软件包来完成同样的事情,或者自己分叉软件包并更新漏洞。

验证修复

现在可以通过运行 npm audit并确保没有显示漏洞来验证它是否有效。提交您的更改,将它们推送到 GitHub,刷新您的通知/警报,它们就应该消失了!

在安装新的依赖项之后,运行以下命令来更新 package-lock. json 文件:

npm update package-lock.json

要检查易受攻击的 npm 包,只需使用以下命令:

npm audit

要修复易受攻击的 npm 包,只需使用以下命令即可修复 package-lock. json:

npm audit fix

步骤1: 安装对等依赖项

npm i --legacy-peer-deps

步骤2: 手动更改包

手动编辑 package-lock.json并将易受攻击的软件包版本更新为固定版本。

npm ci

这将通过忽略 package.json首先根据 package-lock.json安装软件包。

第三步: 再次控制它

快跑

npm audit fix

如果没有帮助,那么使用其他给定的解决方案。

更多资料(只提供英文版本) :

Https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable

或这里: https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities