VSCode“统一纠错规则”需三者协同:.eslintrc.js定义规则、ESLint插件执行检查、settings.json触发时机,缺一不可;否则规则不生效。

vscode 里所谓“统一纠错规则”,不是靠复制粘贴个人设置就能生效的——它必须由 .eslintrc.js(或 .eslintrc.cjs)定义规则、eslint 插件执行检查、settings.json 触发时机,三者缺一不可。否则你看到的只是“别人能报错,我这里没反应”。
为什么 ESLint 规则在同事机器上不报错?
最常见原因是:规则文件存在,但 VSCode 没调用项目本地的 eslint 实例,而是用了全局安装的旧版本,或者压根没启用校验。
-
eslint必须以--ext显式声明支持的文件后缀,比如--ext .js,.ts,.vue,否则.vue或.tsx文件不会被扫描 -
settings.json中的eslint.validate字段若漏写"vue",VSCode 就不会对<script>块做 lint - 如果项目用的是
pnpm或bun,而eslint被装在全局或用户级 node_modules 里,VSCode 可能找不到正确路径——应确保eslint.execPath指向./node_modules/.bin/eslint - 某些规则(如
vue/multi-word-component-names)依赖eslint-plugin-vue,但该插件未被extends引入或版本不匹配,也会静默失效
eslint 配置文件该放哪、怎么写才可靠?
别把 .eslintrc.js 当成“可有可无的补充配置”——它是纠错逻辑的唯一来源,且必须和项目依赖版本对齐。
- 优先用
.eslintrc.cjs(CommonJS 格式),避免 ESM 语法在某些 Node 版本下解析失败 -
extends字段必须显式包含plugin:vue/vue3-essential(Vue 3)、@typescript-eslint/recommended(TS),不能只写eslint:recommended - 禁用冲突规则要写全:比如
prettier/prettier必须设为"error",否则 Prettier 的格式问题不会触发纠错提示 - 不要在
rules里硬编码路径(如"import/resolver": { "node": { "paths": ["src"] } }),应改用settings.js或tsconfig.json统一管理路径别名
settings.json 里哪些键真正影响纠错行为?
VSCode 不会自动读取 ESLint 配置;它只按你写的 settings.json 决定“何时、对哪些文件、用哪个实例”跑检查。
-
eslint.enable必须为true(默认是 true,但某些插件可能覆盖) -
eslint.run推荐设为"onType",比"onSave"更早暴露问题;但若项目大、规则多,可降级为"onSave"避免卡顿 -
eslint.workingDirectories在 monorepo 场景下必须显式列出每个包路径,否则子包里的.eslintrc.cjs不会被识别 -
eslint.packageManager设为"pnpm"或"bun"后,VSCode 才会从对应node_modules/.bin下找二进制,而不是 fallback 到 npm 全局
新人拉完代码还是没纠错提示?排查顺序很关键
这不是配置没提交,而是 VSCode 的“作用域链”没对上——它根本没加载你写的规则。
- 先确认是否以项目根目录为工作区打开(不是只打开了某个子文件夹),否则
.vscode/settings.json和.eslintrc.cjs都不会被识别 - 按
Cmd + ,打开设置,搜eslint.enable,看右侧是否显示Workspace图标;若显示User,说明被个人设置覆盖了 - 打开命令面板(
Ctrl+Shift+P),运行ESLint: Show Output Channel,看控制台有没有Failed to load config或Cannot find module类错误 - 临时在项目根目录运行
npx eslint src/main.ts,验证 CLI 是否能正常报错——如果 CLI 可以、VSCode 不行,基本锁定是settings.json或插件路径问题


















