ESLint Flat Config 在 VSCode 中未加载需检查三件事:确保 ESLint ≥ 8.21、启用 eslint.experimental.useFlatConfig 设置、彻底移除旧配置文件;导出必须为 export default [] 且项目支持 ESM;语言模式、格式化器设置及 parserOptions 需严格匹配。

ESLint Flat Config 在 VSCode 里根本没加载?先看这三件事
VSCode 默认不认 eslint.config.js,哪怕你用 npx eslint --init 生成了它,插件也大概率静默跳过。不是配置写错了,是它压根没读到。
- 确认 ESLint 版本 ≥ 8.21:
npx eslint --version输出必须是v8.21.0或更高;v9.x 更稳妥 - 手动开启实验性支持:VSCode 设置中搜
eslint.experimental.useFlatConfig,值设为true(注意拼写,大小写敏感) - 删掉旧配置文件:
.eslintrc.js、.eslintrc.json等必须全部移除或重命名,否则 Flat Config 会被自动忽略
为什么 eslint.config.js 写完还是报错“Failed to load config”?
Flat Config 要求导出格式严格为 export default [...],且 Node.js 加载环境必须兼容 ESM —— 这正是 VSCode 插件最常卡住的地方。
- 别用
module.exports = [],ESLint v9+ 的 Flat Config 不接受 CommonJS 导出 - 确保文件后缀是
.js(不是.cjs或.mjs),且项目package.json中有"type": "module",否则 Node 会拒绝加载 ESM 格式 - 解析器和插件必须显式导入并调用:
require("@typescript-eslint/parser")不行,得用await import("@typescript-eslint/parser")或提前import声明
editor.codeActionsOnSave 开了但保存不修复?链路断在语言标识上
Flat Config 下自动修复失效,90% 是因为 VSCode 没把当前文件识别为对应语言模式,导致 Code Action 根本不触发。
- 右下角状态栏必须显示
JavaScript、TypeScript或Vue,不能是Plain Text或javascriptreact(拼写错误) -
editor.defaultFormatter必须明确设为"dbaeumer.vscode-eslint",且针对具体语言作用域,例如:"[javascript]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" } -
editor.formatOnSave和editor.codeActionsOnSave需同时启用,缺一不可;"source.fixAll.eslint"值建议设为true,不是"explicit"(后者需手动触发)
Vue/TS 项目里 eslint.config.js 规则不生效?parserOptions.project 和 overrides 是关键
TypeScript 类型检查类规则(如 @typescript-eslint/no-unused-vars)和 Vue SFC 的 template 解析,全靠 overrides + 正确的 parserOptions 组合驱动。
- TS 文件必须进
overrides块,并指定parser: "@typescript-eslint/parser"和parserOptions.project: "./tsconfig.json"(路径必须存在且可读) - Vue 单文件组件要单独匹配
"*.vue",parser设为"vue-eslint-parser",再用parserOptions.parser嵌套指定子解析器:parserOptions: { parser: { js: "@typescript-eslint/parser", ts: "@typescript-eslint/parser", vue: "espree" } } - 所有插件(
@typescript-eslint/eslint-plugin、eslint-plugin-vue)必须已安装,且 Flat Config 中通过plugins字段显式引入,不能只靠extends
Flat Config 的核心复杂点不在写法多难,而在加载链路上每一步都更“刚性”:Node 模块系统、VSCode 插件加载时机、语言标识识别、解析器嵌套层级,任意一环错位都会导致静默失效。调试时优先盯紧 ESLint 输出通道里的 Using configuration from 行,没这句就等于整个配置没启动。


















