vscode中eslint不报错,需检查eslint.enable开关、项目根目录配置文件、文件后缀匹配、本地eslint包安装、warn级别提示设置、eslint.validate语言id、配置文件格式一致性、自动修复与prettier冲突及调试命令。

VSCode 里 ESLint 不报错?检查 eslint.enable 和工作区启用状态
ESLint 插件装了但没反应,大概率是它根本没启动。VSCode 默认不强制启用 ESLint,得手动确认开关是否打开。
打开设置(Ctrl+, 或 Cmd+,),搜 eslint.enable,确保勾选;再检查当前文件是否在 ESLint 能识别的范围内——比如你打开的是 src/index.js,但项目根目录没有 package.json 或 .eslintrc.cjs,它就直接静音。
- 工作区级配置优先于用户级,如果团队用
.vscode/settings.json,务必确认里面没写"eslint.enable": false - 打开的文件后缀必须匹配 ESLint 配置里的
overrides或files规则,比如配置只处理**/*.ts,那index.js就不会被检查 - VSCode 的 ESLint 插件依赖本地
eslint包,不是全局安装的——运行npm ls eslint确认项目里真有,否则插件会 fallback 到“找不到 CLI”状态,也不报错也不提示
警告不提示、只报错?调 eslint.rules.custom 和 eslint.validate
默认情况下,VSCode 的 ESLint 插件只对 javascript 和 typescript 文件做语法检查,且把 warn 级别规则当成“不重要”,不弹提示气泡,只在问题面板里灰显——看起来就像没生效。
要让 warn 变成可感知的提示,得改两个地方:
- 在
.vscode/settings.json里加:"eslint.rules.custom": { "no-console": "warn" }(仅覆盖单条规则)或更常用的是统一提升级别:"eslint.packageManager": "npm"+ 确保 ESLint 配置中rules显式写了"no-console": "warn" -
"eslint.validate"必须包含你实际写的语言 ID,比如用了 Vue 单文件组件,就得加上"vue";用了 Svelte,就得加"svelte",否则<script></script>块里的 JS 完全不走 ESLint 流程 - 注意:VSCode 1.84+ 已弃用旧版
eslint.validate数组写法,改用eslint.options+eslint.run控制触发时机,老配置可能失效
团队协作时规则不一致?靠 .eslintrc.cjs + eslint.config.js 锁死解析逻辑
不同人用不同 Node 版本、不同 VSCode 插件版本,甚至不同终端启动 VSCode,都可能导致 ESLint 加载的配置路径、解析器、插件版本不一致——有人看到警告,有人完全没提示,排查起来像玄学。
根本解法不是靠编辑器设置同步,而是让 ESLint 自己决定“怎么读配置、读哪个”:
- 优先用
eslint.config.js(ESLint v8.22+ 新格式),它明确要求导出一个配置数组,不支持require()动态路径,避免因process.cwd()漂移导致加载错配置 - 如果还在用
.eslintrc.cjs,务必用绝对路径引入插件,比如require.resolve('@typescript-eslint/eslint-plugin'),而不是require('@typescript-eslint/eslint-plugin'),后者依赖node_modules查找顺序,CI 和本地可能不一致 - 禁止在
settings.json里写eslint.options指定configFile,这会覆盖项目内配置,导致团队成员各自指定不同路径,规则彻底分裂
保存时自动修复失败?看 eslint.codeAction.onSave 和 eslint.format.enable 冲突
点了保存却没自动 fix,常见原因是 ESLint 的修复能力被其他格式化工具截胡了——比如 Prettier 同时启用了格式化,而 VSCode 只允许一个“默认格式化器”,冲突时 ESLint 的 source.fixAll.eslint 就被忽略。
- 关掉
eslint.format.enable(它已废弃),改用标准的代码操作:"editor.codeActionsOnSave": { "source.fixAll.eslint": true } - 确保没有同时启用
"editor.defaultFormatter": "esbenp.prettier-vscode"并设为formatOnSave,二者会抢执行权;如需共存,Prettier 应只负责样式(缩进/分号),ESLint 负责逻辑规则,且必须在eslint.config.js中用plugin:prettier/recommended显式整合 - 某些规则(如
import/order)无法安全 auto-fix,VSCode 不会尝试——这不是配置错,是规则本身设计如此,得人工调整
最麻烦的其实是配置加载链:VSCode 插件 → ESLint CLI → 解析器 → 插件包 → 共享配置包。任何一环的路径、版本、导出方式不对,都会静默失败,而且没有任何错误提示。调试时别只盯着 VSCode 设置,先在终端跑 npx eslint src/index.js --debug,看它到底加载了哪些文件、跳过了什么。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











