vscode插件导致纠错规则失效,主因是插件静默禁用、配置被覆盖或多个插件劫持校验链;需检查disabled列表、确认默认格式化器绑定、排查配置文件语法错误及路径失效,并协调eslint与prettier职责避免冲突。

VSCode 插件导致纠错规则失效,基本不是代码或规则本身出问题,而是插件加载失败、配置被覆盖、或多个插件互相劫持了校验链——尤其 ESLint、TypeScript、Prettier、ESLint + Prettier 混用时最典型。
检查插件是否被静默禁用或加载失败
VSCode 更新后常把不兼容的插件丢进 Disabled 列表,UI 上仍显示“已启用”,但实际没运行。
- 按
Ctrl+Shift+P输入Extensions: Show Disabled Extensions,看dbaeumer.vscode-eslint、esbenp.prettier-vscode、ms-vscode.vscode-typescript-next是否在列表里 - 打开开发者工具(
Help → Toggle Developer Tools),在Console里搜not compatible with Code或failed to activate,直接定位哪个插件挂了 - 某些插件(如 Remote-SSH)还依赖远端
.vscode-server版本匹配;本地是1.102.3,远端目录版本旧了,TS/ESLint 服务就起不来
确认默认格式化器和校验器是否绑对语言
VSCode 不会自动把刚装的 ESLint 或 Prettier 当成主力工具——它默认用内置的 vscode.typescript-language-features 处理 JS/TS,除非你明确指定。
- 右下角状态栏看当前语言模式:显示
Plain Text或JavaScript React时,[javascript]的配置可能不生效;得额外加[javascriptreact]块 - 打开设置搜
default formatter,确保JavaScript › Default Formatter和TypeScript › Default Formatter都选了dbaeumer.vscode-eslint(不是eslint或vscode-eslint) - HTML/Vue/MDX 等非标准语言 ID,必须在
settings.json里手动写:"[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }
排查配置文件语法错误或路径断裂
eslint.config.js 或 .prettierrc 里一个尾随逗号、单引号、注释,就能让整个配置静默退出——看起来像“规则失效”,其实是压根没读进去。
- 运行
npx eslint --debug-check index.js,它会报具体哪一行、哪个 key 出错(比如trailingcomma拼错,或parserOptions.project指向不存在的tsconfig.json) -
prettier.path或eslint.runtime设置为空、或指向不存在的路径(Windows 下php.validate.executablePath必须带.exe,且反斜杠建议双写或全用正斜杠) - 工作区
.vscode/settings.json可能覆盖全局设置,例如写了"[typescript]": { "editor.formatOnSave": false },JS/TS 文件就彻底不格式化了
避免 ESLint 与 Prettier 冲突导致规则“相互抵消”
两个插件同时接管 JS/TS 文件时,若没协调好职责边界,会出现“红波浪线乱标”“保存后又变回丑格式”等现象——不是谁错了,是它们在打架。
- 确保项目本地装了
eslint-config-prettier,并在eslint.config.js中显式继承:extends: ["eslint:recommended", "prettier"] - 禁用 Prettier 对 JS/TS 的自动接管:在
settings.json里加"[javascript]": { "editor.formatOnSave": false },只让它管 HTML/CSS/JSON - 别同时开
javascript.validate.enable(VSCode 自带 JS 校验)和 ESLint——前者会抢在 ESLint 前报错,类型提示也错位
真正麻烦的从来不是“哪个开关没开”,而是多个插件在共享进程里抢资源、抢语言 ID、抢配置解析权;一旦发现红波浪线位置飘忽、保存后格式反复横跳,优先关掉一半插件做二分排查,比重装快得多。











