最常见原因是vscode未将当前文件交给eslint处理,需在settings.json中显式配置"eslint.validate": ["javascript", "typescript", "vue"],否则即使开启"source.fixall.eslint": true也无效。

为什么开了 editor.codeActionsOnSave 却没反应
最常见原因是 VSCode 没把当前文件交给 ESLint 处理。右下角语言模式显示为 Plain Text 或 HTML,哪怕你编辑的是 .vue 或 .ts 文件,ESLint 插件也会直接跳过——它只响应自己注册的语言 ID。
必须在 settings.json 中显式声明要校验的语言:
"eslint.validate": ["javascript", "typescript", "vue"]- 如果用 JSX/TSX,还得加上
"javascriptreact"和"typescriptreact" - 旧版配置里写
"eslint.autoFixOnSave": true已废弃,VS Code 1.80+ 版本完全忽略它
source.fixAll.eslint 和 source.fixAll 的区别
写 "source.fixAll": true 是危险操作:它会把所有已启用的代码操作(Prettier、Stylelint、Import Sorter)全触发一遍,结果就是引号来回切、分号忽有忽无、import 顺序被重排又还原。
真正该用的是精准控制:
- 只开
"source.fixAll.eslint": true,确保只有 ESLint 规则参与修复 - 别同时开
"source.organizeImports": true——eslint-plugin-import的 import 排序规则和 VS Code 自带的组织逻辑冲突严重 - 如果项目用了 Prettier,
"editor.formatOnSave": true必须关掉,否则格式化和修复打架
Standard 规范下哪些规则真能自动修复
eslint-config-standard 本身不决定“能不能修”,只决定“启不启用”。能否修复,取决于具体规则是否标有 ✅ Fixable,以及它的配置写法是否保留修复能力。
比如这些规则默认可修复:
-
semi:必须配成["error", "always"],写成"error"字符串就失去--fix能力 -
quotes:同理,["error", "single"]可修,"error"不可修 -
comma-dangle、space-before-function-paren同样遵循这个规律
但 no-console、no-unused-vars 这类语义类规则,无论怎么配都不可自动修复——ESLint 不会帮你删掉一行 console.log 或注释掉未使用变量。
修复失效时怎么快速定位问题
打开命令面板(Ctrl+Shift+P),运行 Developer: Toggle Developer Tools,切换到 Console 标签页。保存文件后看有没有类似这样的报错:
-
Failed to run code action 'source.fixAll.eslint': No ESLint configuration found→ 检查项目根目录是否有.eslintrc.cjs或eslint.config.js -
Cannot find module 'eslint-plugin-import'→eslint-config-standard的 peer deps 缺了,必须装全:eslint、eslint-plugin-import、eslint-plugin-node、eslint-plugin-promise - 没报错但也不修复 → 运行
npx eslint --print-config src/index.js,确认输出里目标规则值是数组形式,且不是"off"
Flat Config(eslint.config.js)用户尤其注意:ESLint 版本必须 ≥ 8.56.0,否则 extends: ['standard'] 不生效,规则压根没加载。











