VS Code中ESLint不生效主因是本地未安装eslint、配置文件未被识别或插件未正确连接项目;须执行npm install eslint --save-dev,配置.eslintrc.js,设置parser及plugins,并检查Output通道日志。

VS Code 里 ESLint 不报错、不标红、保存也不修复,基本可以断定它根本没跑起来——不是规则写错了,而是本地 eslint 包没装、配置文件没被识别,或者插件压根没连上项目。
npm install eslint --save-dev 必须执行,不能跳过
VS Code 的 ESLint 插件(dbaeumer.vscode-eslint)只是个“遥控器”,真正干活的是你项目里的 eslint 可执行文件。它默认只找 node_modules/.bin/eslint,找不到就静默失效,不会报错也不会提示。
- 运行
npx eslint --version,如果报错或无输出,说明本地没装或安装失败 - 必须用
npm install eslint --save-dev(或yarn add eslint -D),全局安装(npm install -g eslint)在多数工作区下会被忽略 - TypeScript 项目额外要装
@typescript-eslint/parser和@typescript-eslint/eslint-plugin;React 项目要加eslint-plugin-react - 装完检查
node_modules/.bin/eslint是否存在(Windows 下是.cmd文件)
.eslintrc.js 比 eslint.config.js 更稳,别急着用新格式
ESLint v8.22+ 推出的 eslint.config.js(导出数组)目前在 VS Code 插件中支持不一致,尤其在多工作区或 monorepo 下容易漏读配置,导致规则完全不生效。
- 优先用
.eslintrc.js(module.exports = { ... })或.eslintrc.cjs - 如果非用
eslint.config.js,必须手动开启 flatConfig 支持:eslint.experimental.useFlatConfig设为true - 配置文件名必须严格匹配:VS Code 不会自动向上查找父目录,也不会合并多个配置文件
- 避免在
.eslintrc.js里写export default(ESM 语法),Node.js 加载会失败
parser 和 parserOptions.project 缺一不可,否则 TS/JSX 直接跳过
ESLint 默认只解析标准 JavaScript。遇到 .ts、.tsx、.jsx 就会卡在语法解析阶段,连规则都不跑,表现为“没报错也没提示”。
- TypeScript 项目必须配
parser: "@typescript-eslint/parser",且parserOptions.project指向./tsconfig.json(否则@typescript-eslint/no-unused-vars这类依赖类型信息的规则无效) - Vue 单文件组件需同时配
parser: "@typescript-eslint/parser"和parserOptions.parser子项指向"vue-eslint-parser" - 确保
eslint.validate列表包含"typescript"和"typescriptreact",漏掉typescriptreact就不校验.tsx文件 - 报错
Parsing error: Cannot find module 'xxx',90% 是parser或plugins名字写错,或对应包没装进当前node_modules
editor.codeActionsOnSave 需配合语言模式和默认格式化器
eslint.autoFixOnSave 已被彻底弃用。现在自动修复由 VS Code 的通用代码操作机制接管,缺任一条件都会失效。
- 必须设
"editor.codeActionsOnSave": { "source.fixAll.eslint": true } - 对应语言的
editor.defaultFormatter必须设为dbaeumer.vscode-eslint(例如在[javascript]语言设置里) - 右下角语言标识必须是
JavaScript或TypeScript,不能是Plain Text或未识别的类型 -
editor.formatOnSave建议关掉(设为false),否则和 Prettier 冲突会导致格式混乱
最常被忽略的一点:VS Code 的 ESLint 输出通道(Output → ESLint)才是真正反映加载过程的日志源,所有“为什么没反应”的问题,都应该先去看那里有没有 Using configuration from 或 Failed to load parser 这类关键线索。











