vscode 保存时自动修复 eslint 问题需满足两个前提:项目本地安装 eslint(node_modules/.bin/eslint 存在),且 settings.json 中显式配置 "editor.codeactionsonsave": { "source.fixall.eslint": true };规则本身须为 fixable,配置文件须命名正确(如 .eslintrc.cjs)并被正确加载。

VSCode 保存时自动修复 ESLint 问题,核心就两件事:本地 eslint 包必须存在,且 editor.codeActionsOnSave 必须显式配对 source.fixAll.eslint。装了插件但没反应,90% 是链路断在第一步——VSCode 根本没调起你项目的 eslint 可执行文件。
确认本地 eslint 已安装且可被调用
ESLint 插件不自带 lint 引擎,它只负责把文件发给项目里 node_modules/.bin/eslint 执行。如果这个文件不存在,所有配置都白搭。
- 在项目根目录运行
npm install eslint --save-dev(或yarn add eslint -D),确保node_modules/.bin/eslint存在 - 打开命令面板(
Ctrl+Shift+P),运行ESLint: Show Output Channel,看输出里有没有Cannot find module或Failed to load config - 右下角状态栏点 ESLint 图标,如果显示
Using globally installed ESLint,说明没走本地包——检查 VSCode 是否打开了正确的项目根目录
settings.json 中必须写的最小配置项
图形界面勾选无效,settings.json 是唯一可信源。不要写 "source.fixAll": true,它会触发所有语言服务器,大概率冲突或失败。
- 必须添加:
"editor.codeActionsOnSave": { "source.fixAll.eslint": true } - 推荐同时加:
"eslint.enable": true和"eslint.validate": ["javascript", "typescript", "vue"](按实际语言增减) - 如果用了 Prettier,务必禁用
"editor.formatOnSave": false,否则两者缩进/引号规则打架,保存后代码可能来回跳
为什么有些报错就是不自动修?看规则本身是否支持
ESLint 规则分两类:fixable 和非 fixable。比如 semi、quotes 天然可修;no-console 默认可删语句但不可替换成 toast;react-hooks/exhaustive-deps 完全不可修,只能人工判断。
- 快速验证:在报错行按
Ctrl+.(Windows/Linux)或Cmd+.(macOS),弹出菜单里有Fix 'xxx' problem才表示当前规则可修 - 查官方文档,规则页右上角带 ✅
Fixable标记的才支持 —— 比如no-unused-vars在默认配置下不可修,需配合eslint-plugin-unused-imports - 配置规则时,值必须是数组形式:
"semi": ["error", "always"],而不是"semi": "error"(后者某些版本会禁用修复)
配置文件不生效?先盯住文件名和加载路径
VSCode 插件默认只读项目根目录下的配置文件。命名错、路径错、格式错,都会导致整个配置静默失效。
- 优先用
.eslintrc.cjs或.eslintrc.js(导出对象,不是export default),避免用eslint.config.js(Flat Config 新格式,VSCode 插件支持不稳定,尤其 monorepo 下) - TS 项目必须装
@typescript-eslint/parser并在配置中写parser: "@typescript-eslint/parser",否则.tsx文件直接解析失败,连规则都不跑 - 运行
npx eslint --print-config src/App.tsx(替换为任意源文件),看输出是否含预期规则和fixable: true字段 —— 这是最准的验证方式
最容易被忽略的是:VSCode 的 ESLint 插件不会自动 fallback 到全局 eslint,也不会提示“找不到本地包”。它只是安静地不干活。所以每次配置失败,第一反应不该是改 settings.json,而是先跑一遍 npx eslint --version 和 ESLint: Show Output Channel 看真实日志。











