Github 告诉我 package-lock.json 文件中的依赖项易受攻击且已过时。问题是,如果我执行npm install
or npm update
,它们都不会更新 package-lock.json 文件中的依赖项。
我对此进行了很多谷歌搜索,并删除了文件并完成了npm install
.
如果有人可以帮助解决这个问题,我将不胜感激。有问题的包是 Hoek,我的 package.json 文件中实际上没有它。
提前谢谢了。
Github 告诉我 package-lock.json 文件中的依赖项易受攻击且已过时。问题是,如果我执行npm install
or npm update
,它们都不会更新 package-lock.json 文件中的依赖项。
我对此进行了很多谷歌搜索,并删除了文件并完成了npm install
.
如果有人可以帮助解决这个问题,我将不胜感激。有问题的包是 Hoek,我的 package.json 文件中实际上没有它。
提前谢谢了。
听起来 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 的问题。但是-如果您想要快速修复-这个答案就足够了。
TLDR:使用npm i $PARENT_PKG_NAME
.
笔记
更新依赖项时,您应该查看 CHANGELOG 是否有任何重大更改。
诊断
npm audit
将显示易受攻击的包(请注意,您需要一个 package-lock.json 文件,因此您需要运行npm i
),以及它所依赖的包(如果适用)。请注意,您还可以使用npm ls $CHILD_PKG_NAME
它来查看其父依赖项。
快速修复尝试
npm audit fix
值得一试,npm audit fix --force
但有时需要手动完成修复(见下文)。
手动修复
父包很可能已经修复了它们的依赖项(您可以通过访问他们的 GitHub 并查看最近的提交来验证这一点——或者只是看看这是否修复了它),所以您可以运行npm i $PARENT_PKG_NAME @$NEW_VERSION
它,它会更新您的包锁.json。
如果父母没有修复漏洞
如果维护者似乎没有响应,您可以考虑使用替代包来完成相同的事情,或者分叉包并自己更新漏洞。
验证修复
npm audit
您现在可以通过运行并确保没有漏洞出现来验证它是否有效。提交您的更改,将它们推送到 GitHub,刷新您的通知/警报,它们应该会消失!
如果你有 npm@6 或更高版本,你可以使用npm audit fix
你的安全问题。
手动编辑package-lock.json
并将易受攻击的软件包版本更新为固定版本,然后使用
npm ci
这将package-lock.json
通过首先忽略来安装软件包package.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
利用:
npm 我胡克
npm 将安装最新版本的 hoek 并且你的 package.lock.json 会更新。
要检查易受攻击的 npm 包,只需使用以下命令:
npm audit
要修复易受攻击的 npm 包,只需使用以下命令即可修复 package-lock.json:
npm audit fix
我遇到了这个问题,发现这是因为我运行 npm 的服务器上有旧版本的 npm - package-lock.json 仅受新版本支持。
您是否尝试过:转到您的项目根目录,删除package-lock.json
文件node_modules
和.cache
文件夹,然后npm install
.
安装新的依赖项后,运行以下命令来更新 package-lock.json 文件:
npm update package-lock.json