Github告诉我,我的package-lock.json文件中的依赖项容易受到攻击并过时。问题是,如果我执行npm install
或npm update
,它们都不会更新package-lock.json文件中的依赖项。
我已经对此进行了大量的Google搜索,并删除了文件并完成了npm install
。
如果有人能帮忙解决这个问题,我非常感激。有问题的软件包是Hoek,我在package.json文件中实际上没有。
非常感谢提前。
答案 0 :(得分:13)
听起来好像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尝试为你修复漏洞。
答案 1 :(得分:3)
TLDR:使用npm i $PARENT_PKG_NAME
更新父程序包。
诊断
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
它将更新您的package-lock.json。
验证修补程序
您现在可以通过运行npm audit
并确保没有任何漏洞来验证它是否有效。提交您的更改,将其推送到GitHub,刷新您的通知/警报,它们应该消失了!
答案 2 :(得分:2)
如果您使用的是npm @ 6或更高版本,则可以使用npm audit fix
解决安全问题。
答案 3 :(得分:1)
使用:
npm我ho
npm将安装hoek的最新版本,并且package.lock.json会更新。
答案 4 :(得分:0)
我遇到了这个问题,发现这是因为运行npm的服务器上具有旧版本的npm-package-lock.json仅受较新版本的支持。
答案 5 :(得分:0)
您尝试过以下方法:转到项目根目录,删除package-lock.json
文件,node_modules
和.cache
文件夹,然后删除npm install
。
答案 6 :(得分:0)
安装新的依赖项后,运行以下命令来更新package-lock.json文件:
npm update package-lock.json
答案 7 :(得分:0)
要修复易受攻击的npm软件包,只需使用以下命令:
npm audit fix
答案 8 :(得分:0)
手动编辑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
答案 9 :(得分:0)
您可以使用
显式更新此依赖项npm update package_name --depth 6
在你的情况下:
npm update hoek --depth 6