无法修复的 Npm 漏洞。

9

我开始学习React,并通过运行以下命令创建了我的第一个应用:

'npx create-react-app my-app'

应用程序构建完成后,终端中出现了一个警告:

22个漏洞(9个中等,13个高危)

我尝试通过运行以下命令来修复它:

'npm audit fix'

但返回了以下结果:

npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! 发现:type-fest@0.21.3 npm ERR! 位于 node_modules/type-fest npm ERR! type-fest@"^0.21.3" 来自 ansi-escapes@4.3.2 npm ERR! 位于 node_modules/ansi-escapes npm ERR! ansi-escapes@"^4.2.1" 来自 @jest/core@26.6.3 npm ERR! 位于 node_modules/@jest/core npm ERR! @jest/core@"^26.6.0" 来自 jest@26.6.0 npm ERR! 位于 node_modules/jest npm ERR! peer jest@"^26.0.0" 来自 jest-watch-typeahead@0.6.1 npm ERR! 位于 node_modules/jest-watch-typeahead npm ERR! 还有 1 个 (react-scripts) npm ERR! 还有 1 个 (jest-cli) npm ERR! ansi-escapes@"^4.3.1" 来自 jest-watch-typeahead@0.6.1 npm ERR! 位于 node_modules/jest-watch-typeahead npm ERR! jest-watch-typeahead@"0.6.1" 来自 react-scripts@4.0.3 npm ERR! 位于 node_modules/react-scripts npm ERR! react-scripts@"4.0.3" 来自 根目录 npm ERR! 还有 2 个 (jest-watcher, terminal-link) npm ERR! npm ERR! 无法解析依赖项: npm ERR! peerOptional type-fest@"^0.13.1" 来自 @pmmmwh/react-refresh-webpack-plugin@0.4.3 npm ERR! 位于 node_modules/@pmmmwh/react-refresh-webpack-plugin npm ERR! @pmmmwh/react-refresh-webpack-plugin@"0.4.3" 来自 react-scripts@4.0.3 npm ERR! 位于 node_modules/react-scripts npm ERR! react-scripts@"4.0.3" 来自 根目录
npm ERR! npm ERR! 修复上游依赖项冲突,或使用 --force 或 --legacy-peer-deps npm ERR! 命令重试以接受不正确(可能损坏)的依赖项分辨率。
npm ERR! npm ERR! 有关完整报告,请参见 /home/azizdragon/.npm/eresolve-report.txt。
npm ERR! 运行此命令的完整日志可在 npm ERR! /home/azizdragon/.npm/_logs/2021-06-23T03_09_31_663Z-debug.log 中找到。
我尝试删除package-lock.json文件和node_modules文件夹,然后运行以下命令:

npm install

但结果仍然存在漏洞。当我运行“npm audit”时,以下是报告: browserslist 4.0.0 - 4.16.4
严重性: 中等
正则表达式拒绝服务 - https://npmjs.com/advisories/1747
可通过 npm audit fix --force 进行修复
将安装 react-scripts@1.1.5,这是一个重大变更
node_modules/react-dev-utils/node_modules/browserslist
react-dev-utils >=6.0.0-next.03604a46
依赖于有漏洞的 browserslist 版本
node_modules/react-dev-utils
react-scripts >=0.10.0-alpha.328cb32e
依赖于有漏洞的 @pmmmwh/react-refresh-webpack-plugin 版本
依赖于有漏洞的 @svgr/webpack 版本
依赖于有漏洞的 mini-css-extract-plugin 版本
依赖于有漏洞的 react-dev-utils 版本
依赖于有漏洞的 webpack-dev-server 版本
node_modules/react-scripts
css-what <5.0.1
严重性: 高
拒绝服务 - https://npmjs.com/advisories/1754
可通过 npm audit fix --force 进行修复
将安装 react-scripts@1.1.5,这是一个重大变更
node_modules/svgo/node_modules/css-what
css-select <=3.1.2
依赖于有漏洞的 css-what 版本
node_modules/svgo/node_modules/css-select
svgo >=1.0.0
依赖于有漏洞的 css-select 版本
node_modules/svgo
@svgr/plugin-svgo *
依赖于有漏洞的 svgo 版本
node_modules/@svgr/plugin-svgo
@svgr/webpack >=4.0.0
依赖于有漏洞的 @svgr/plugin-svgo 版本
node_modules/@svgr/webpack
react-scripts >=0.10.0-alpha.328cb32e
依赖于有漏洞的 @pmmmwh/react-refresh-webpack-plugin 版本
依赖于有漏洞的 @svgr/webpack 版本
依赖于有漏洞的 mini-css-extract-plugin 版本
依赖于有漏洞的 react-dev-utils 版本
依赖于有漏洞的 webpack-dev-server 版本
node_modules/react-scripts
postcss-svgo >=4.0.0-nightly.2020.1.9
依赖于有漏洞的 svgo 版本
node_modules/postcss-svgo
cssnano-preset-default *
依赖于有漏洞的 postcss-normalize-url 版本
依赖于有漏洞的 postcss-svgo 版本
node_modules/cssnano-preset-default
cssnano 4.0.0-nightly.2020.1.9 - 4.1.11
依赖于有漏洞的 cssnano-preset-default 版本
node_modules/cssnano
optimize-css-assets-webpack-plugin 3.2.1 || 5.0.0 - 5.0.4 || 5.0.6
依赖于有漏洞的 cssnano 版本
node_modules/optimize-css-assets-webpack-plugin
glob-parent <5.1.2
严重性: 中等
正则表达式拒绝服务 - https://npmjs.com/advisories/1751
可通过 npm audit fix --force 进行修复
将安装 react-scripts@

我应该使用npm audit fix --force吗? 如果有帮助的话,我的系统是Linux Mint 18.3 Cinnamon 64位。 Node版本:v16.0.0 NPM版本:7.18.1

提前感谢。


运行npm audit fix几次,然后我认为中等数量应该会减少或警告每次都会减少,实际上再次正常工作。 我曾经就是这样解决的。 - prod3v3loper
我遇到了同样的问题。作为新手,我对Node生态系统感到担忧 - 如果基本的标准脚本创建了一个带有如此多关键漏洞的应用程序,那么这对工具的成熟度意味着什么... - alexakarpov
很巧合的是,我刚好读了Dan Abramov的这篇博客文章,讲述了这个问题。要点是,实际上,许多这些漏洞可能不会影响使用Create React App创建的应用程序,因为这些依赖项仅在开发中使用。 - Matthew Daly
2
@alexakarpov 阅读 https://overreacted.io/npm-audit-broken-by-design/ 以获取更多详细信息,但这并不反映工具的成熟度,而是 npm audit 实现存在问题。如果您在 Node.js 应用程序的上下文中使用它们部署到生产环境中,则这些问题可能会成为问题,但在 Create React App 的上下文中,它们不是。您只需要关注 npm audit --production 标记的任何内容即可。 - Matthew Daly
2个回答

4
如Matthew Daly在Dan Abramov的博客文章npm audit: Broken by Design的评论中提到的,大多数或可能所有的警告都与开发依赖项有关,因此它们不会影响您的生产构建,您无需担心修复它们。
这并不意味着开发依赖项的漏洞在每种情况、每个软件包和每个版本中都是无害的。
根据我的经验,大多数情况下无法使用npm audit解决所有问题,几乎总是使用npm audit --force会使情况变得更糟并破坏您的应用程序。
因此,在安装像create-react-app这样的流行、高度维护的软件包的最新版本时,我会忽略这些警告。
当然,像CRA这样的库的维护者知道这些警告,并且如果它们很严重,他们会立即修复它们。
确保这些警告无害的另一种方法是检查create-react-app的报告问题或任何其他库,并查看响应是什么。

我强烈建议您阅读提到的文章,npm审计:设计缺陷


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接