vscode 不自动读取项目根目录的 .eslintrc.js,需显式配置 eslint.packagemanager、eslint.validate 和 editor.codeactionsonsave;确保本地安装 eslint、正确设置 vue/ts 解析器及文件匹配规则。

ESLint 配置文件没被 VSCode 读到,.eslintrc.js 写对了也不生效
VSCode 不会自动找项目根目录下的 .eslintrc.js,必须显式告诉它“这个项目该用哪个 ESLint 实例”。常见现象是:终端里 npx eslint --fix 能修,但保存时没反应。
实操建议:
- 在项目根目录下确保有
package.json,且已安装eslint(本地优先,不依赖全局) - VSCode 设置里搜索
eslint.packageManager,设为"npm"或"yarn"(匹配你实际用的包管理器) - 检查
eslint.validate设置是否包含"javascript"和"typescript"(如果用 TS) - 重启 VSCode —— 配置变更后它不会热重载 ESLint 服务
editor.codeActionsOnSave 开启了但还是不修,检查这三项
这是最常被改错的设置项。VSCode 的自动修复不是靠 “启用 ESLint” 就行,而是靠“保存时触发哪类代码操作”,而 ESLint 只是其中一种提供者。
实操建议:
- 打开设置(
Ctrl+,),搜索codeActionsOnSave,点击右上角“在 settings.json 中编辑” - 确认写法是:
"editor.codeActionsOnSave": { "source.fixAll.eslint": true }—— 注意不是"source.fixAll"(那是全语言通用开关,不指定 ESLint) - 如果同时用了 Prettier,别写
"source.fixAll",否则可能冲突;应只开"source.fixAll.eslint",再让 ESLint 配置里 extendsprettier - 检查有没有其他扩展(如 Stylelint、TSLint 遗留插件)注册了同名 code action,造成覆盖
部分规则无法自动修复,比如 no-console 或 complexity
ESLint 的 --fix 只能修语法层面可推断的错误(如引号、分号、空格),不能修逻辑或设计类问题。VSCode 保存时调用的正是这个 --fix 能力,所以它天然有边界。
实操建议:
- 查文档确认规则是否标有 ✅ “Fixable” —— 比如
quotes、semi可修,no-console、max-lines不可修 - 想禁用某条不可修规则?别在
rules里设"error",直接设"off",避免它持续报错但又修不了 - 需要人工介入的规则,建议配合
eslint-plugin-unused-imports这类带安全删除能力的插件,它们的--fix更激进
TypeScript + Vue 项目里 eslint-plugin-vue 修复失效
Vue 单文件组件(.vue)默认不被 ESLint 当作 JS/TS 处理,eslint-plugin-vue 必须配合正确的处理器(eslint-plugin-vue/essential 等)和解析配置,否则 --fix 根本不进 <script></script> 块。
实操建议:
-
.eslintrc.js中必须有:extends: [ 'plugin:vue/vue3-essential', 'eslint:recommended' ]
,且parserOptions.parser要指向@typescript-eslint/parser(如果用 TS) - 确保
files或overrides里包含**/*.vue,否则 ESLint 根本不扫描 .vue 文件 - VSCode 的
eslint.validate设置要加"vue":例如["javascript", "typescript", "vue"] - Vue 3 的
setup语法糖需额外配parserOptions.extraFileExtensions: [".vue"]
eslint@8.56+ 对 Vue SFC 的支持才真正稳定,旧项目升级时容易卡在这一步。











