Node.js 如何修复package-lock.json中不';t在package.json中列出?

Node.js 如何修复package-lock.json中不';t在package.json中列出?,node.js,npm,package.json,package-lock.json,Node.js,Npm,Package.json,Package Lock.json,Github告诉我,我的package-lock.json文件中的依赖项易受攻击且过时。问题是,如果我执行npm安装或npm更新,它们都不会更新package-lock.json文件中的依赖项 我在谷歌上搜索了很多,还删除了文件并安装了npm 如果有人能帮我解决这个问题,我将不胜感激。讨论中的包是Hoek,我的package.json文件中实际上没有这个包 非常感谢。听起来Hoek是您的一个依赖项的依赖项(因此,您的package.json中的包需要它自己的package.json) 您已经尝试

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

我在谷歌上搜索了很多,还删除了文件并安装了
npm

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


非常感谢。

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

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

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

编辑: 为了帮助您确定哪些软件包使用哪些依赖项,您可以使用NPM的
ls
命令:

例如,要查看哪些软件包正在使用Hoek,请执行以下操作:
npm ls hoek

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

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

使用:

npm i霍克


npm将安装最新版本的hoek,您的package.lock.json将被更新。

我遇到此问题,并发现这是因为我运行npm的服务器上有旧版本的npm-package-lock.json仅受新版本支持

如果你有npm@6或者以后,您可以使用来解决安全问题。

您是否尝试过这样做:转到项目根目录,删除
包锁.json
文件、
节点\u模块和
缓存
文件夹,然后
npm安装

TLDR:使用
npm i$parent\u PKG\u NAME
更新父包


注意

在更新依赖项时,您应该查看变更日志,查看是否有任何中断的更改

诊断

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

快速修复尝试

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

手动修复

最有可能的是,父包已经修复了它们的依赖关系(您可以通过访问他们的GitHub并查看最近的提交来验证这一点——或者只是看看这是否修复了它),因此您可以运行
npm i$parent\u PKG\u NAME@$NEW\u VERSION
,它将更新您的package-lock.json

如果家长尚未修复漏洞

如果维护者似乎没有反应,你可以考虑使用一个替代的包来完成相同的事情或者分叉包和更新漏洞。 验证修复程序


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

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

npm update package-lock.json

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

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

npm audit fix

手动编辑
package lock.json
,将易受攻击的软件包版本更新为固定版本,然后使用

npm-ci
这将根据
package lock.json
安装包,首先忽略
package.json
。然后使用

npm审计修复程序
再一次,要确定它是否正确完成。如果没有帮助,那么使用其他给定的解决方案

更多信息请点击此处:


或者在这里:

您可以使用

npm update package_name --depth 6 
就你而言:

npm update hoek --depth 6 

尝试删除您的package-lock.json并再次运行npm安装。您可以检查您的依赖项,找出哪一个依赖于hoek并更新该依赖项。(但你也可能运气不好,而且这种依赖性没有更新的版本。)我建议使用与@RishikeshDhokare相同的@RishikeshDhokare。我自己的问题解决了我在另一个包中遇到了类似的问题(咆哮)。我猜这是我的
package.json
中的某个版本,取决于咆哮的特定(易受攻击)版本。您的答案是正确的,如果您可以共享命令,显示
package.json
中的哪些包取决于
package lock.json
中显示的易受攻击的包,您可能会找到答案。请参阅更新的答案。如果需要其他帮助,请创建新问题。:)谢谢完成:您确定有必要提出其他问题吗?它们看起来像是重复的。@JBallin我的答案已经更新了好几次。最初它可能不符合复制品的条件。如果在我的情况下,快速修复也不起作用,该怎么办