VSCode本身不执行ESLint检查,仅调用项目本地安装的eslint包并读取配置文件;若未安装包、缺失有效配置(如.eslintrc.cjs)、或未以项目根目录打开工作区,ESLint将完全不触发——链路断裂而非插件故障。

VSCode 本身不执行 ESLint 检查,它只调用你项目里安装的 eslint 包并读取配置文件;没装包、没配文件、或 VSCode 没识别到正确工作区,就根本不会报错——不是插件坏了,是链路断了。
确认项目已安装 eslint 并有可执行入口
VSCode 的 ESLint 扩展(dbaeumer.vscode-eslint)默认查找 node_modules/.bin/eslint,找不到才回落到全局。全局安装容易引发版本冲突,且团队协作时不可靠。
- 在项目根目录运行:
npm install eslint --save-dev(或yarn add eslint -D/pnpm add eslint -D) - 验证是否成功:
npx eslint --version应输出版本号,如v8.57.0 - 若用 pnpm 或 yarn 2+,需在 VSCode 设置中显式指定:
eslint.packageManager设为"pnpm"或"yarn",否则插件可能找不到本地eslint - 检查
package.json的devDependencies是否含eslint,缺失会导致插件静默失效
必须存在且被正确加载的配置文件
ESLint 不会自动启用任何规则,空配置 = 零检查。VSCode 插件只认特定名字的配置文件,且加载逻辑严格依赖路径和格式。
- 优先使用
.eslintrc.cjs(CommonJS 格式),比.eslintrc.js更稳,尤其在 Node ≥14 + TypeScript 项目中 - 不要用
.eslintrc(无后缀)或.eslintrc.mjs,插件不识别;eslint.config.js(flat config)需 ESLint v8.22+ 且插件 ≥ v2.4.0,同时不能与旧版共存 - 配置中加
"root": true,防止向上递归到父目录的配置(比如 monorepo 外层误覆盖) - 用
npx eslint --init生成基础配置,比手写更少出错;选框架/TS/风格时它会自动装插件、配parser和extends
VSCode 必须识别到工作区并启用 ESLint
即使包和配置都对,VSCode 也可能因工作区范围错误而完全不触发检查——这不是 bug,是路径查找机制决定的。
- 务必通过
File > Open Folder打开**项目根目录**(含package.json和.eslintrc.*的文件夹),而非子目录 - 检查右下角状态栏是否有 ESLint 图标;若显示 “Disabled” 或 “Using globally installed ESLint”,点击它 → “Enable for Workspace” 或 “Restart ESLint Server”
- 在项目根目录的
.vscode/settings.json中写入:"eslint.enable": true,避免被用户级设置覆盖 - 若校验
.ts或.tsx文件,必须在 VSCode 设置中补充:"eslint.validate": ["javascript", "typescript", "typescriptreact"]
常见“没反应”的真实原因和快速验证法
多数问题不是配置写错了,而是 ESLint 进程根本没启动,或启动时的工作目录/解析上下文不对。
- 终端执行:
npx eslint src/index.ts --ext .ts --quiet,若报错(如Cannot find module '@typescript-eslint/parser'),说明插件或解析器没装,VSCode 也会同样失败 - 打开一个 JS 文件,按
Ctrl+Shift+P→ 输入ESLint: Fix all auto-fixable Problems,若弹出错误提示,基本能定位到缺失的 parser 或 plugin - TS 项目中,
parserOptions.project必须指向有效的tsconfig.json路径(如"./tsconfig.json"),否则类型相关规则(如@typescript-eslint/no-unused-vars)永远不生效 - React/TSX 文件不检查?检查
.eslintrc.cjs中files或overrides是否覆盖了**/*.tsx,默认不包含
最易被忽略的一点:ESLint 的配置作用域永远以当前文件所在路径向上查找最近的配置文件,不是以 VSCode 窗口打开的根路径为准。把 .eslintrc.cjs 放在 src/ 目录下,对 index.js(在项目根)就完全无效。


















