github Dependabot 警报:第 n 次检查中的正则表达式复杂性低效

github Dependabot alert: Inefficient Regular Expression Complexity in nth-check

可能重复,但找​​不到任何明确的答案。

Dependabot cannot update nth-check to a non-vulnerable version The latest possible version that can be installed is 1.0.2 because of the following >conflicting dependency:

react-scripts@5.0.0 requires nth-check@^1.0.2 via a transitive dependency on css-select@2.1.0

刚刚从 4.0.0 升级到 react-scripts@5.0.0。

正如 Dan Abramov 在 this 问题中所解释的那样,它(很可能)是误报,可以安全地消除。

更具体地说,如果您正在使用 CRA 并且仅从它引用 nth-check,则这不是问题,因为 CRA 是一种构建工具,易受攻击的代码永远不会进入生成的应用程序包中,并且因此永远不会被客户端代码调用。

您可以通过将“react-scripts”移动到 package.json 和 运行 npm audit --production.

中的“devDependencies”来验证这一点

我也在react-scripts@^5.0.0

所以,我个人比较推荐先用yarn。但是每个人都有自己的喜好!为此,可以键入

npm install --global yarn

之后你可以删除你的 package-lock 文件和 运行 在你的应用程序文件夹中的命令

yarn

(真令人惊讶。)这将生成一个 yarn.lock 文件。请注意,您应该避免同时使用 yarn 和 npm !

在同一个 yarn.lock 文件中,您必须搜索 nth-check 字符串!在一个全新的 React 应用程序中(到目前为止),您应该找到该字符串的 8 次出现。该字符串将设置在包版本旁边。这就是你想要改变的。

以我为例,我有

nth-check@^1.0.2: //so far. This version can be different for an older projet.
  version "1.0.2"
  resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz"

你想把所有那些错误的版本都改掉。它应该看起来像这样:

nth-check@^2.0.1:
  version "2.0.1"
  resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz"

不过,您将不得不更改几个版本。不只是一个。我猜对了(我相信是 -6 次。 如果保存文件,启动一个简单的

yarn

命令后跟

yarn audit

它应该可以解决您的一个问题!

希望这对您有所帮助。干杯!

我确认它从 react-scripts 5.0.1 开始仍然有效,您可以将您的 React 脚本版本从 package.json 中的“依赖项”移动到“devDependencies”,如下所示:

 "devDependencies": {
    "react-scripts": "^5.0.1"
  },

“devDependencies 是在开发阶段通过在文件中要求它们或 运行 作为二进制文件来使用的包。这些包仅在开发期间是必需的,而对于生产构建不是必需的。”。 =12=]

运行 "npm audit --production" 表明您在生产环境中不需要 react-scripts。

当然,如果您仍然 运行 存在漏洞,则可能是另一个软件包导致了该漏洞。

https://dev.to/moimikey/demystifying-devdependencies-and-dependencies-5ege