eslint不标红javascript错误,首要确认插件是否真正加载:检查console是否有“cannot find module 'eslint'”或“no eslint configuration found”报错;确保vscode打开的是项目根目录而非子文件夹;本地安装eslint并生成.eslintrc.cjs配置;关闭内置验证"javascript.validate.enable": false;启用"editor.codeactionsonsave": {"source.fixall.eslint": true}及指定默认格式化器。

ESLint 扩展不标红 JavaScript 错误?先确认它是否真正加载
VSCode 的 ESLint 插件不是装上就生效,它必须在项目上下文中被激活。如果打开一个 JS 文件却没看到波浪线,大概率是插件压根没读到配置。
- 右键打开命令面板(
Ctrl+Shift+P),输入Developer: Toggle Developer Tools,切换到 Console 标签页,看是否有Cannot find module 'eslint'或No ESLint configuration found报错 - 确保你当前打开的是**整个项目根目录**(比如
/my-project),而不是子文件夹(如/my-project/src)——否则插件找不到node_modules/eslint和.eslintrc.cjs - 本地安装 ESLint:
npm install --save-dev eslint,别用-g;然后运行npx eslint --init生成配置,手动新建空文件容易漏掉parserOptions或env
为什么 javascript.validate.enable 应该设为 false?
VSCode 内置的 JavaScript 验证(基于 TypeScript 语言服务)和 ESLint 是两套独立检查机制。同时开启会导致规则打架、提示重复、甚至覆盖真实错误。
- 内置验证只做基础语法检查(比如
const a = ;),无法识别逻辑问题(如no-unused-vars、no-console) - 一旦你用了 ESLint,建议显式关闭内置校验:
"javascript.validate.enable": false,把校验权完全交给 ESLint - 这个设置应写在项目级
.vscode/settings.json中,而非用户全局设置——避免干扰其他非 JS 项目
保存时自动修复失效?检查 editor.codeActionsOnSave 和格式化器绑定
自动修复不是“开了开关就行”,它依赖三件事:ESLint 能识别规则、VSCode 知道该用谁修、且没有其他格式化器抢指令。
- 必须启用:
"editor.codeActionsOnSave": { "source.fixAll.eslint": true } - 必须指定默认格式化器:
"editor.defaultFormatter": "dbaeumer.vscode-eslint"(注意不是 Prettier) - 禁用 Prettier 的自动修复:
"editor.codeActionsOnSave": { "source.fixAll.prettier": false },否则它会和 ESLint 反复修改同一行 - 如果项目用的是
.cjs配置,确保eslint.validate显式包含javascript:"eslint.validate": ["javascript"]
Prettier 和 ESLint 冲突?靠 eslint-config-prettier 断开耦合
两者都管缩进、引号、分号,但职责不同:ESLint 检查逻辑与风格,Prettier 只负责格式。冲突根源在于 ESLint 规则里混入了格式类规则(比如 quotes、indent)。
- 安装:
npm install --save-dev eslint-config-prettier - 在
.eslintrc.cjs的extends数组中,把"prettier"放在最后,例如:["eslint:recommended", "prettier"] -
.prettierrc必须存在且合法(纯 JSON 或导出对象),路径必须是项目根目录;带注释的 JSON 会被忽略 - 不要在 VSCode 设置里开
"editor.formatOnSave"同时启用两个格式化器——只让 Prettier 做最终格式化,ESLint 专注报错
最常被跳过的环节是工作区信任和多包项目支持。如果你的项目含 packages/ 子目录,记得在 .vscode/settings.json 加上 "eslint.workingDirectories": [{ "mode": "auto" }],否则 ESLint 可能只扫描顶层目录。另外,首次打开未信任的工作区时,VSCode 会禁用所有扩展,需手动点击“Trust Folder”才能让 ESLint 启动。











