升级react-scripts至v5.0.1后遭遇eslint react插件冲突问题
解决react-scripts v5.0.1升级后ESLint react插件冲突问题
核心问题分析
冲突源于两个关键原因:
- 同时存在双重ESLint配置源:package.json中的
eslintConfig和独立的.eslintrc.js均生效,导致ESLint重复加载含eslint-plugin-react的配置 - 依赖版本不兼容:你当前使用的
eslint-config-airbnb@18.1.0仅支持ESLint 7.x,而react-scripts v5依赖ESLint 8.x,版本不匹配引发插件加载异常
具体解决方案
1. 移除重复配置入口
删除package.json中的eslintConfig字段,避免ESLint同时加载两套配置:
// 删掉以下内容 "eslintConfig": { "extends": [ "react-app" ] }
2. 升级兼容版本的ESLint依赖
执行命令升级到支持ESLint 8.x的依赖包:
npm install eslint-config-airbnb@^19.0.4 eslint-plugin-import@^2.28.1 eslint-plugin-jsx-a11y@^6.7.1 eslint-plugin-react@^7.33.2 eslint-plugin-react-hooks@^4.6.0 --save-dev
3. 调整.eslintrc.js配置
整合react-app基础配置,优化规则优先级并解决冲突:
{ "root": true, "parser": "@babel/eslint-parser", "env": { "browser": true, "es6": true, "node": true, "cypress": true }, "parserOptions": { "ecmaVersion": 2020, "sourceType": "module", "requireConfigFile": false, "babelOptions": { "presets": ["@babel/preset-react"] }, "ecmaFeatures": { "jsx": true, "modules": true } }, "extends": [ "react-app", "airbnb", "plugin:prettier/recommended" ], "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" }, "settings": { "react": { "version": "detect" }, "import/resolver": { "node": { "paths": [ "src", "cypress" ], "extensions": [ ".js", ".jsx", ".ts", ".tsx" ] } } }, "plugins": [ "react-hooks", "cypress", "json" ], "rules": { // 解决react-app与airbnb的规则冲突 "react/react-in-jsx-scope": "off", "import/no-extraneous-dependencies": ["error", {"devDependencies": true}] } }
4. 清理缓存并重启项目
执行命令清除ESLint缓存,确保新配置生效:
npx eslint --cache-clear npm start
内容的提问来源于stack exchange,提问作者Duha Shawareb
相关产品推荐
相关产品推荐

