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

新手上路,请多包涵

Github 告诉我 package-lock.json 文件中的依赖项易受攻击且已过时。问题是,如果我执行 npm installnpm update ,它们都不会更新 package-lock.json 文件中的依赖项。

我对此进行了很多谷歌搜索,并删除了文件并完成了 npm install

如果有人可以帮助解决这个问题,我将不胜感激。有问题的包是 Hoek,我的 package.json 文件中实际上没有它。

提前谢谢了。

原文由 Raph117 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

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

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

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

编辑: 为了帮助您确定哪些包正在使用哪些依赖项,您可以使用 NPM 的 ls 命令: https ://docs.npmjs.com/cli/ls

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

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

编辑 3: 阅读本文的人还应该查看下面 JBallin 的答案。它扩展了我在这里提供的信息,并且(在我看来)是一个更结构化的答案,可以更好地解决 OP 的问题。但是-如果您想要快速修复-这个答案就足够了。

原文由 Alex Mulchinock 发布,翻译遵循 CC BY-SA 4.0 许可协议

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


笔记

更新依赖项时,您应该查看 CHANGELOG 以了解任何重大更改。

诊断

npm audit 将揭示易受攻击的包(请注意,为此你需要一个 package-lock.json 文件,因此你需要运行 npm i ),以及它是依赖项的包(如果适用)。请注意,您还可以使用 npm ls $CHILD_PKG_NAME 查看其父依赖项。

快速修复尝试

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

手动修复

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

如果父母没有修复漏洞

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

验证修复

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

原文由 JBallin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题