VSCode代码纠错规则不生效,根本原因是规则链中断:ESLint需根目录配置、本地版本及无覆盖;Ctrl+.依赖光标位置与语言模式;Python需解释器、路径、索引三者对齐;Vue需Volar接管且禁用Vetur;所有功能均要求工作区已信任。

VSCode 里代码纠错规则(比如 ESLint、Prettier、TypeScript 类型检查)不报错、不修复、不提示,根本不是插件“坏了”,而是规则链上某个环节断了——语言服务没起来、配置没被读到、或工具版本互斥。先确认是否真失效:打开一个明显有问题的文件(如 consol.log()),看波浪线有没有、Ctrl+. 有没有选项、保存后有没有自动修。没反应,再按下面几步查。
ESLint 规则不触发?三件事必须同时成立
即使 .eslintrc.js 文件存在,no-unused-vars 这类规则仍可能静默失效。
- 规则文件必须放在项目根目录(即含
package.json的那一层),不能在子文件夹里 - VSCode ESLint 插件必须用本地安装的
eslint,不是全局命令:打开设置 → 搜索eslint.packageManager→ 设为npm(或yarn/pnpm) - 配置不能被覆盖:
eslint.config.js或.eslintrc.cjs必须导出有效对象;若用了extends,eslint-config-prettier必须放在数组末尾,否则前面规则会把它冲掉
Ctrl+. 没反应或选项不对?光标和语言服务都得在线
这个快捷键不是万能开关,它只对当前光标下的「可诊断 token」生效,且完全依赖后端语言服务器返回结果。
- 光标必须停在报错标识符上:比如
consol.log()错误,光标得落在consol上,停在.、log或空格里都不行 - 右下角状态栏必须显示正确语言模式(如
TypeScript、Vue),显示Plain Text或Unknown就直接失效 - TS/JS 项目缺
tsconfig.json或jsconfig.json,defineProps、useState这类 API 根本不会进语言服务,自然没有导入建议 - 输入法干扰很常见:中文输入法会吞掉 Ctrl+.,务必切英文再试
Python import 标红但运行正常?解释器、路径、索引三者没对齐
Pylance 不是从 pip install 里读模块,而是靠解释器路径 + 预设索引范围找代码。标红 ≠ 运行错,只是编辑器“看不见”。
- 按 Ctrl+Shift+P →
Python: Select Interpreter,选带venv或.venv字样的路径(Windows 是venv\Scripts\python.exe,macOS/Linux 是venv/bin/python) - 打开集成终端(Ctrl+`),确认提示符含环境名(如
(venv)),再执行which python(macOS/Linux)或where python(Windows),输出路径必须和上一步一致 - 如果项目结构是
src/utils.py,需在.vscode/settings.json里加:"python.analysis.extraPaths": ["src"],否则 Pylance 不扫描src目录
Vue 文件里无法自动导入?Volar 接管链断了
Volar 不是装了就自动工作,它需要明确接管 TypeScript 和 JavaScript 语言服务,否则 ref、defineProps 这些 API 在 Vue 单文件组件里就是“不存在”的。
- 必须禁用 Vetur:它和 Volar 冲突,会导致语言模式识别失败
- 运行命令
Vue: Take Over and Restart(Ctrl+Shift+P 输入执行),强制 Volar 接管 - 项目根目录必须有
tsconfig.json(哪怕内容是{}),否则 TS Server 启动失败,Volar 失效 - 确保
files.associations把*.vue映射为vue,且启用了typescript.suggest.autoImports
最常被忽略的点是:所有这些工具都依赖“当前工作区已信任”。左下角若显示 Restricted Mode,所有语言服务、自动修复、甚至右上角 ▶️ 按钮都会被禁用——点进去选 Trust Folder and Subfolders 才算真正开始排查。


















