ESLint在VSCode不报错,主因是插件未识别项目配置:需确保根目录有.eslintrc.js或eslint.config.mjs,显式配置"eslint.validate"支持.jsx/.tsx,并禁用抢占语言服务的插件,右下角显示“ESLint: Ready”才表示生效。

VSCode 插件不是越多越好,而是越少、越专、越协同越好——尤其对 JavaScript 开发者来说,装错一个插件,就可能让 ESLint 报错不生效、Prettier 格式化被跳过、保存时触发两次格式化甚至死循环。
为什么 ESLint 在 VSCode 里不报错?
常见现象是:终端里 npx eslint 能正常标出 no-console,但 VSCode 编辑器里一行红波浪线都没有。这不是 ESLint 没装,而是插件没“认到”项目配置。
- 确认项目根目录存在
.eslintrc.js或eslint.config.mjs(新版 ESLint v9+ 强制用后者) - VSCode ESLint 插件默认只校验
javascript和typescript,若你写的是.jsx或.tsx,必须在settings.json显式声明:"eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"] - 禁用其他格式化插件(如
JavaScript and TypeScript Nightly),它们会抢占语言服务,导致 ESLint 的诊断能力被绕过 - 检查右下角状态栏是否显示
ESLint: Ready;若显示ESLint: Disabled,说明插件检测到冲突配置或未找到有效配置文件
Prettier 和 ESLint 一起用,为什么保存后代码还是被改乱了?
典型症状:保存后引号从单引号变双引号、分号忽有忽无、对象换行风格反复横跳——这说明两个工具的规则在打架,而不是协同。
- 必须安装
eslint-config-prettier并在.eslintrc.js的extends数组末尾加入:'prettier'(注意不是'prettier/react'这类子集,除非你明确需要) - VSCode 设置中只设一个默认格式化器:
"editor.defaultFormatter": "esbenp.prettier-vscode",同时关闭javascript.format.enable(原生 JS 格式化器) - 不要同时开启
editor.formatOnSave和eslint.format.enable:后者已废弃,且会触发 ESLint 自己的格式化逻辑,与 Prettier 冲突 - 验证方式:删掉
node_modules,重新npm install,再重启 VSCode —— 很多“不生效”其实是缓存了旧版 ESLint 配置
哪些 JS 相关插件建议直接卸载?
这些插件看似有用,实测在 JS/TS 项目中极易引发性能下降或行为不可控:
-
Beautify:和 Prettier 完全重叠,且不支持.prettierrc,保存时会覆盖 Prettier 结果 -
Auto Rename Tag:Vue/JSX 中常误匹配模板字符串内的花括号,导致重命名扩散到非标签区域;现代 VSCode 原生已支持 JSX 标签自动重命名(需启用"editor.linkedEditing") -
JavaScript Booster:提供变量重命名、内联函数等功能,但会显著拖慢大型 TS 项目响应速度;VSCode 原生重构(F2)+ TypeScript 语言服务已足够可靠 -
Code Spell Checker:对 JS 变量名频繁误报(如把useState当拼写错误),且无法区分代码上下文;建议仅在 Markdown/注释区启用
如何让 JS 工作流真正“开箱即用”?
一个稳定、低干扰的 JS 开发环境,核心插件组合其实只需要 4 个,且全部官方维护或社区高信任度:
-
ESLint(插件 ID:dbaeumer.vscode-eslint):负责语义检查、规则提醒、Fix on Save(需配合配置) -
Prettier - Code formatter(插件 ID:esbenp.prettier-vscode):唯一格式化入口,禁用所有其他格式化器 -
Import Sorter(插件 ID:amatiasq.sort-imports):按字母/分组排序 import,比 ESLint 的sort-imports规则更稳定、更快 -
Volar(Vue)或ES7+ React/Redux/React-Native snippets(React):框架专属补全,避免通用 snippet 插件污染 JS 语言服务
真正的难点不在“装什么”,而在“关什么”——每次新增插件前,先看它监听了哪些事件(onSave、onType、onDidOpenTextDocument),只要和 ESLint/Prettier 重叠,就要警惕。VSCode 的性能瓶颈,90% 来自插件事件监听的无序叠加,而不是单个插件本身有多重。


















