VS Code 中 ESLint 不生效的主因是本地未安装 eslint、配置文件不被识别或语言验证器未启用;需确保本地安装、使用支持的配置文件名、正确设置 parser/plugins,并检查 VS Code 的 eslint.enable 和语言模式。

VS Code 里 ESLint 不生效,大概率不是插件没装,而是 eslint 没在项目本地装、或者配置文件没被识别、又或者 VS Code 没启用对应语言的验证器。
确认项目已安装 eslint 及对应插件
ESLint 必须以本地依赖形式存在(即 node_modules/.bin/eslint 可执行),VS Code 的 ESLint 插件默认不使用全局 eslint。否则会报错 ESLint server is not running 或直接静默失效。
- 运行
npm install eslint --save-dev(或yarn add eslint -D) - 若用 TypeScript,额外装
@typescript-eslint/parser和@typescript-eslint/eslint-plugin - 检查
node_modules/.bin/eslint是否存在(Windows 下是node_modules/.bin/eslint.cmd)
确保根目录有合法的 ESLint 配置文件
VS Code 的 ESLint 扩展只认特定名称的配置文件,且优先级严格。它不会自动回退到父目录或合并多个配置。
- 支持的文件名(按优先级从高到低):
.eslintrc.js、.eslintrc.cjs、.eslintrc.json、.eslintrc.yaml、eslint.config.js(v8.50+ 新格式) -
package.json中的eslintConfig字段也有效,但不能和上述文件共存,否则会被忽略 - 配置中必须显式指定
parser(如@typescript-eslint/parser)和plugins,否则 TS/JSX 文件可能完全不校验
检查 VS Code 的 eslint.enable 和语言关联设置
即使插件已安装、项目有配置,VS Code 仍可能因语言模式或开关关闭而跳过检查。
- 打开设置(
Cmd+,/Ctrl+,),搜索eslint.enable,确认为true - 对 JS/TS 文件,确保右下角语言模式是
JavaScript或TypeScript(不是Plain Text或JavaScript React——除非你真用了 React 规则) - 如果用
JavaScript React模式但没配react相关插件,ESLint 会因解析失败而静默退出 - 可在工作区设置
.vscode/settings.json中强制启用:"eslint.validate": ["javascript", "typescript", "javascriptreact", "typescriptreact"]
遇到“Cannot find module”错误时怎么定位
这类报错几乎都源于路径解析失败,而不是模块真丢了。常见于 parser/plugin 路径写死、或配置文件用了 ESM 语法但项目是 CJS。
- 打开 VS Code 输出面板(
View → Output),选择ESLint,看完整错误栈 —— 关键线索在 “Cannot find module ‘xxx’” 后面的路径 - 如果路径指向
node_modules/eslint/...,说明 ESLint 在用自己的node_modules查找插件,而非项目根目录的;此时需检查配置中 plugin 名称是否带前缀(如应写"@typescript-eslint",而非"@typescript-eslint/eslint-plugin") - 若用
eslint.config.js(新 flat config 格式),必须导出数组,且所有插件/规则必须通过require()加载,不能用import(除非 VS Code 启动时明确支持 ESM)
最常被忽略的是:ESLint 插件本身不提供规则,它只是运行器;所有规则逻辑都在你装的 eslint 包和各类 plugin 里 —— 少装一个,就少一整类检查。别只盯着 VS Code 设置看。










