VSCode配置ESLint需本地安装eslint及对应解析器插件、正确放置.eslintrc.js等配置文件、显式设置eslint.validate和editor.codeActionsOnSave,并通过输出通道验证加载路径与解析器是否匹配。

VSCode 里配 ESLint 不是装个插件就完事,关键得让编辑器真正调用你项目本地的 eslint、识别 .eslintrc.js 或 eslint.config.js、并和你当前 Node 版本与语法(JS/TS/JSX)对齐。否则你会看到“no ESLint configuration found”、红色波浪线不出现、保存不修复,甚至报 Cannot find module 'eslint-plugin-react'。
确认本地 eslint 可执行且版本匹配
VSCode 的 ESLint 插件默认只找项目根目录下的 node_modules/.bin/eslint,不认全局安装的。哪怕你 npx eslint --version 能跑,VSCode 也可能静默失败。
- 运行
npm install eslint --save-dev(或yarn add eslint -D),确保devDependencies里有eslint - TypeScript 项目必须额外装
@typescript-eslint/parser和@typescript-eslint/eslint-plugin - React 项目加
eslint-plugin-react和eslint-plugin-react-hooks - 检查
package.json中的engines.node字段是否和你本地node -v兼容(比如项目要求>=18.0.0,但你用的是 v16)
选对配置文件格式并导出正确
ESLint v8.22+ 推出 eslint.config.js(flat config),但 VSCode 插件(截至 2026 年中)对它的支持仍不稳定,尤其在 monorepo 或嵌套工作区下容易漏读。
- 优先用
.eslintrc.js:导出对象,用module.exports = { ... },别写export default - 若用 ESM 项目(
type: "module"在package.json),改用.eslintrc.cjs并保持module.exports - 避免同时存在
.eslintrc.js和eslint.config.js,否则插件可能加载错一个并报错 - 配置里必须显式指定
parser:JSX 文件要加ecmaFeatures.jsx: true,TS 文件必须设parser: '@typescript-eslint/parser'并配parserOptions.project指向tsconfig.json
VSCode 设置必须显式声明校验语言和自动修复
默认情况下,VSCode 不会检查 .tsx、.vue 或 .svelte 里的脚本块,也不会在保存时自动修——这些都得手动开。
- 在
.vscode/settings.json里加:"eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"](漏掉typescriptreact就不查.tsx) - 启用保存修复:
"editor.codeActionsOnSave": {"source.fixAll.eslint": true},注意这只触发带 ✅ 标记的可修复规则(如semi、quotes),缩进或逻辑类问题不会动 - 禁用 Prettier 的自动格式化(
"editor.formatOnSave": false),否则和 ESLint 修复打架;真要用 Prettier,先加eslint-config-prettier关闭冲突规则 - 如果状态栏右下角显示 “Disabled”,点它 → “Enable for Workspace”
调试加载失败:看输出通道 + 检查路径查找逻辑
最易被忽略的一点:ESLint 配置是按文件路径向上查找的,不是按 VSCode 窗口根目录。你在 src/utils/index.js 编辑,但 .eslintrc.js 放在 packages/core 目录下?那它根本不会生效。
- 打开命令面板(
Ctrl+Shift+P),运行ESLint: Show Output Channel,看日志里有没有Using configuration from /path/to/.eslintrc.js - 如果提示
Failed to load parser '@typescript-eslint/parser',先ls node_modules/@typescript-eslint/parser确认包存在,再核对.eslintrc.js里parser字符串是否拼错 - 用
File > Open Folder打开**含package.json和配置文件的最外层目录**,别只开子文件夹 - 多工作区项目(monorepo)需在
settings.json里配"eslint.workingDirectories": [{ "mode": "auto" }],否则插件可能只扫第一个 workspace
复杂点在于:VSCode 加载 ESLint 是客户端和服务端分离的,配置路径、解析器版本、Node 运行时三者稍有不一致,就会静默失效——没有错误弹窗,只有“看起来没反应”。所以每次改完配置,务必看输出通道日志,而不是凭感觉猜。


















