ESLint配置文件必须位于项目根目录且命名正确(如.eslintrc.cjs),VSCode仅识别根目录下的标准配置文件,不扫描子目录;语言模式需匹配React/TSX,eslint.enable必须为true并禁用javascript.validate.enable,Prettier与ESLint共存时须通过eslint-config-prettier对齐规则以避免格式冲突。

ESLint 配置文件必须存在且路径正确
VSCode 不会自动扫描整个项目找 .eslintrc,它只认根目录(或工作区根)下的标准命名配置文件。常见错误是把配置放在子目录、用错后缀,或误以为 .eslintrc(无后缀)能生效。
-
.eslintrc.cjs是当前最稳妥的选择(兼容 Node.js ESM/CJS 混合环境,且被 VSCode 和 CLI 一致识别) -
.eslintrc.js可用,但若项目启用"type": "module",可能因 CommonJS 加载失败而静默失效 -
.eslintrc.json安全但不支持注释和动态逻辑,扩展性差 - 纯
.eslintrc(无后缀)会被 VSCode 和npx eslint忽略——不是 bug,是设计行为
语言模式必须匹配 React/TSX,不能只选 JavaScript
右下角状态栏显示 JavaScript 时,ESLint 实际跳过 JSX 属性校验、Hook 规则(如 react-hooks/rules-of-hooks)、TSX 类型断言等关键检查。这不是插件没装好,是语言服务根本没加载对应解析器。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 点击右下角语言模式 → 选
JavaScript React(.js 文件)或TypeScript React(.tsx/.ts 文件) - 如果项目用 Vite + React + TS,但打开 .ts 文件时状态栏仍是
TypeScript,说明files.associations缺失或冲突 - 可在工作区
.vscode/settings.json中强制绑定:"files.associations": { "*.tsx": "typescriptreact", "*.ts": "typescriptreact" }
eslint.enable 必须为 true,且 javascript.validate.enable 建议关掉
VSCode 内置的 javascript.validate.enable 用 TypeScript 语言服务做基础检查,但它和 ESLint 规则重叠又不兼容:比如它报 no-unused-vars 但不支持自定义规则,还会和 ESLint 的修复指令打架。
- 在用户或工作区
settings.json中设:"eslint.enable": true - 同时设:
"javascript.validate.enable": false—— 把语义检查全交给 ESLint,避免双头校验导致标红不一致 - 如果关掉后变量拼写错误不报了,说明 ESLint 配置里漏了
no-undef或no-unused-vars规则,不是编辑器问题
Prettier 和 ESLint 共存时,格式类规则必须由 Prettier 独占
当两者都启用且规则未对齐,会出现“保存后缩进变 2 空格 → 下次保存又变 4 空格”这类震荡现象。根源是 ESLint 在格式上和 Prettier 对抗,而不是协作。
- 在
.eslintrc.cjs的extends数组末尾加"prettier"(需安装eslint-config-prettier) - 确保
prettier插件本身不参与 lint —— 它只负责格式化,不参与报错 -
settings.json中只设一个 formatter:"editor.defaultFormatter": "esbenp.prettier-vscode",且关掉"eslint.format.enable"
javascript.validate.enable 和 ESLint),提示反而更不可信。

















