eslint没标红,先确认三件事:右下角语言模式须为javascript react或typescript react;项目根目录存在.eslintrc.cjs或.eslintrc.js;settings.json中eslint.enable为true且eslint.format.enable为false。

ESLint 为什么没标红?先确认这三件事
ESLint 不报错,大概率不是插件没装,而是它根本没启动起来。VS Code 默认不主动加载 ESLint,必须满足三个条件才能触发诊断:
- 右下角状态栏显示的语言模式必须是
JavaScript React或TypeScript React,不是JavaScript——后者会跳过 JSX 中的 props 校验和 hook 规则 - 项目根目录存在
.eslintrc.cjs(推荐)或.eslintrc.js;.eslintrc(无后缀)会被忽略 -
settings.json中必须有"eslint.enable": true,且"eslint.format.enable"要设为false,否则会和 Prettier 冲突导致检查失效
Error Lens 怎么让错误“一眼看见”
默认 VS Code 只在行号旁画个小波浪线,Error Lens 把错误直接塞进代码行末尾或行内,省去来回滚动找提示的麻烦。但它本身不产生错误,只渲染语言服务器(如 ESLint、TypeScript)发来的诊断信息。
- 安装后默认启用,但若没看到提示,先检查 ESLint 或 TS 是否已正常工作——Error Lens 是“显示器”,不是“检测仪”
-
errorLens.messageMode可设为inline(行内)、gutter(边距)或hover(悬停),inline最直观,但长错误可能换行挤占代码空间 - 想屏蔽某类误报(比如 TypeScript 的
TS2322类型赋值警告),加到errorLens.ignoreRules即可,不影响其他规则
变量拼写错误为啥不报?这不是拼写插件的事
Code Spell Checker 默认不检查变量名、函数名、属性名——它只扫字符串、注释和 Markdown。所以 const userNmae = 'test' 不会标红,不是插件坏了,是它本来就不干这活。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 真正该管这事的是 ESLint:
no-undef(未定义变量)和no-unused-vars(声明了但没用)能捕获大部分低级拼写错误 - 如果
userNmae被用了但没声明,no-undef就会报;如果声明了但全程没用,no-unused-vars就会报 - 别指望靠拼写插件查逻辑命名,得靠 ESLint 规则 + 项目级类型约束(比如 TypeScript 的
strict模式)
JS 智能提示失效?根源常在 jsconfig.json
VS Code 的 JavaScript 补全、跳转定义、参数提示,底层靠的是 TypeScript 语言服务。它需要明确知道项目结构,否则就“瞎了”。jsconfig.json 就是告诉它“从哪开始看”。
- 必须放在项目根目录,内容至少包含
"compilerOptions": {"target": "ES2020", "module": "commonjs"} -
"checkJs": true可开启对.js文件的类型检查(需配合 JSDoc 注释),但会拖慢大型项目,建议开发阶段开、上线前关 - 如果
node_modules太大影响性能,加"exclude": ["node_modules"],否则语言服务可能卡住不响应
复杂点在于:这些插件不是孤立工作的。ESLint 提示依赖语言服务提供的 AST,Error Lens 渲染依赖 ESLint 输出,而语言服务又依赖 jsconfig.json 或 tsconfig.json。漏掉任意一环,错误就“隐身”了。










