ESLint插件不报错不标红,90%因未加载成功:需确认插件已启用且版本≥v2.4.0、配置文件(如.eslintrc.cjs)被正确识别、VSCode设置未禁用校验、无Prettier/Vetur等插件冲突,修改后须重启VSCode。

ESLint 插件在 VSCode 里不报错、不标红、保存没反应——90% 不是插件坏了,而是它根本没加载成功,或被其他插件/配置压住了。
插件本身是否启用且兼容
VSCode 的 ESLint 插件(dbaeumer.vscode-eslint)不是“装了就生效”。必须手动确认它处于 enabled 状态,且版本 ≥ v2.4.0(否则在 VSCode 1.85+ 上会静默禁用)。旧版插件可能无法解析 .eslintrc.cjs 或识别 ESLint v9 的 flat config。
- 打开扩展面板(Ctrl+Shift+X),搜
eslint,检查状态和版本 - 终端运行
code --list-extensions --show-versions | grep eslint快速验证 - 若版本过低,卸载后重装最新版;别依赖旧项目残留的全局安装
.eslintrc.* 文件是否被正确识别
ESLint 配置有严格优先级:项目根目录的 .eslintrc.js / .eslintrc.cjs / .eslintrc.json > package.json 中的 eslintConfig 字段 > 全局配置。任意一层语法错误(比如多逗号、export default 写成 module.exports 却用了 ES module 语法)都会导致整个配置失效。
- 打开 VSCode 的 Output 面板(Ctrl+Shift+U),切换到 ESLint 输出通道,看是否有
Parsing error或Failed to load config - 确保文件名拼写准确:
.eslintrc.cjs不是.eslintrc.js(Node.js 会按扩展名决定模块类型) - 若用 ESLint v9,推荐直接用
eslint.config.js,避免.eslintrc.*解析歧义
VSCode 设置是否覆盖了项目配置
VSCode 的用户级或工作区设置(settings.json)可能关掉了 ESLint 的关键能力,比如禁用校验、指定错误语言范围、或强制跳过某些文件。
- 搜索
eslint.enable,确认值为true - 检查
eslint.validate是否包含当前文件类型(如["javascript", "typescript", "vue"]) - 留意
eslint.options是否误设了cwd,导致找不到项目配置文件 - 工作区
.vscode/settings.json里若有"eslint.packageManager": "yarn",但项目实际用pnpm,也会静默失败
与其他插件抢控制权
ESLint 和 Prettier、Vetur、EditorConfig 同时监听保存事件,就会互相覆盖。典型现象是:保存后波浪线闪一下又消失、prettier/prettier 报错但格式化无效、右键“格式化文档”菜单里出现多个选项。
- 执行
code --disable-extensions启动干净 VSCode,再打开项目测试 ESLint 是否恢复——如果恢复,说明存在插件冲突 - 高频冲突组合:
esbenp.prettier-vscode+dbaeumer.vscode-eslint+octref.vetur(Vue2 项目)或vue.volar(Vue3 项目) - Volar 和 Vetur 绝对不能共存;Vetur 已停止维护,Vue3 项目必须卸载 Vetur 并启用 Volar 的
volar.takeOverMode - 右下角状态栏点“格式化程序”,确认当前激活的是你期望的插件(如 Prettier),而不是 Vetur 或 ESLint 自带的 formatter
最常被忽略的一点:改完 .eslintrc.cjs 或 settings.json 后,不重启 VSCode,它不会重新读取配置——尤其是 jsconfig/tsconfig 路径映射或插件启用状态变更时,重启是硬性要求。


















