ESLint插件没报错是因为javascript.validate.enable默认启用,掩盖了ESLint的精准提示;应关闭该内置校验,显式设"javascript.validate.enable": false,并确保.eslintrc配置文件存在、eslint已安装、工作区设置生效。

ESLint 插件没报错,是因为 javascript.validate.enable 挡了路
VS Code 默认启用的内置 JS 校验(基于 TypeScript 语言服务)和 ESLint 是两套系统。如果 javascript.validate.enable 为 true,它会抢先报一堆基础错误(比如拼错变量名),但规则固定、不可配、不支持自定义逻辑检查——这反而会掩盖 ESLint 的更精准提示。
正确做法是关掉它,把校验权完全交给 ESLint:
- 在项目级
.vscode/settings.json中显式设为"javascript.validate.enable": false - 确保项目根目录有
.eslintrc.js或.eslintrc.cjs,且已安装eslint和对应插件(如@typescript-eslint/eslint-plugin) - 不要只依赖用户设置,工作区设置才对项目生效
eslint.autoFixOnSave 为什么有时不生效
常见错因不是配置没开,而是 ESLint 没识别到当前文件类型。VS Code 默认只对 .js 文件启用 ESLint,但你写的是 .jsx、.ts 或 .vue?
必须手动扩展开关范围:
- 在
.vscode/settings.json中加eslint.validate数组:["javascript", "javascriptreact", "typescript", "vue"] - 若用 Prettier,记得先用
eslint-config-prettier关闭所有格式类规则,否则autoFixOnSave可能和 Prettier 冲突 -
editor.formatOnSave和eslint.autoFixOnSave别同时开——选一个主力,另一个关掉
灯泡图标(Quick Fix)点不动?检查 eslint.workingDirectories
多包项目(如 monorepo)下,ESLint 扩展常找不到正确的配置文件位置,导致光标悬停无灯泡、右键无修复选项。
根本解法是显式声明工作区路径:
- 在
.vscode/settings.json中添加:"eslint.workingDirectories": [{ "mode": "auto" }] - 或指定具体子目录:
"eslint.workingDirectories": ["./packages/core", "./packages/ui"] - 避免用
./这种模糊路径,ESLint 无法可靠解析
为什么 // eslint-disable-next-line 有时失效
不是注释写错了,而是规则 ID 对不上。比如你想禁用“禁止 console”,但写了 // eslint-disable-next-line no-console,而实际规则名可能是 no-console(没错,就是这个),但有些插件(如 eslint-plugin-react)会带前缀,变成 react/no-console。
安全做法:
- 鼠标悬停在波浪线下,看右下角弹出的规则 ID(如
eqeqeq或react-hooks/exhaustive-deps) - 复制完整 ID,粘贴到注释里:
// eslint-disable-next-line react-hooks/exhaustive-deps - 禁用整块代码用
/* eslint-disable react-hooks/exhaustive-deps */,但别滥用——它绕过的是真实问题
最易被忽略的其实是项目级配置的加载优先级:VS Code 读取 .eslintrc.* 时,会从文件所在目录向上逐层查找,直到根目录。如果你在子目录里放了个空的 .eslintrc.js,它就会截断上级配置,导致规则突然消失。删掉冗余配置文件,比调参数更管用。


















