当前位置: 首页 > 面试题库 >

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

池宸
2023-03-14
问题内容

Github告诉我,package-lock.json文件中的依赖项容易受到攻击并且已经过时。问题是,如果我做的npm install还是npm update,他们都没有更新程序包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的问题。但是-
如果您想快速解决-该答案就足够了。



 类似资料:
  • 我正在学习使用Node.js和express框架的后端。我通过添加了模块。几个小时后,我注意到我的项目不包含package.json文件。 我现在尝试添加测试命令来使用nodemon。比如。但是在package-lock.json文件中没有这样的部分。 我不想再从头开始。

  • 有没有办法检查一个文件是否与兼容,而不运行?兼容意味着指定的版本可以通过来实现。 当前方法 我目前正在通过运行并检查是否更改为: 用例 我想在持续集成中添加一个测试,以确保如果开发人员修改了,他们也会相应地更新。这一点很重要的原因是我们的持续集成使用了,而不是仅引用,因此如果开发人员不更新锁文件,持续集成设置将与他们期望的不匹配。

  • 问题内容: 有没有办法确定您的package.json文件中是否有不再需要的软件包? 例如,当尝试一个软件包并在以后注释或删除代码但忘记卸载它时,我最终得到了几个可以删除的软件包。 确定包是否可以安全删除的有效方法是什么? 问题答案: 您可以使用称为depcheck的npm模块(至少需要Node版本10)。 安装模块: 运行它并找到未使用的依赖项: 这种方法的好处是您不必记住or 命令。 要运行

  • Github已经将我的应用锁文件中的依赖项标记为易受攻击。 要修复它,我应该将该包更新到一个较新的版本。 抱歉,如果这是一个非常基本的问题,但我似乎没有找到任何有用的关于这一点。

  • 问题内容: 如果我在应用程序根目录中定义了package.json文件并运行,它将自动安装package.json中定义的所有依赖项。 但是,这似乎并非相反。 如果我在应用程序根目录中执行此操作,则会引发错误,使我无法通过它传递程序包名称。 这还不应该卸载与我安装的相同的软件包吗? 难道我做错了什么? 问题答案: 如果使用Bash,只需切换到包含package.json文件的文件夹,然后运行以下命