vs code中eslint生效需三步协同:本地安装eslint(非全局)、放置eslint.config.js(v9+推荐格式)、配置"editor.codeactionsonsave": {"source.fixall.eslint": true};缺一不可,否则波浪线可能来自默认规则而非自定义配置。

VS Code 本身不“安装 ESLint 配置”,而是通过三步协同生效:装插件、装本地 eslint、放对配置文件。缺任何一环,你看到的红色波浪线都可能不是你定义的规则。
必须本地安装 eslint,不能只靠全局
VS Code 的 ESLint 插件(dbaeumer.vscode-eslint)默认只调用当前工作区 node_modules/.bin/eslint,完全忽略全局安装的 eslint。如果你只运行了 npm install -g eslint,插件大概率静默降级为无配置检查——此时报错来自内置默认规则,和你写的 .eslintrc.js 无关。
- 在项目根目录执行:
npm install eslint --save-dev(或yarn add eslint --dev) - TypeScript 项目额外加装:
npm install @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev - 验证是否就位:
npx eslint --version能输出版本号,且node_modules/.bin/eslint存在
eslint.config.js 是 ESLint v9+ 唯一推荐格式
ESLint v8.53 起支持新格式,v9+ 官方明确推荐使用 eslint.config.js(导出数组),而非旧式的 .eslintrc.js 或 .eslintrc.json。VS Code 插件会优先查找这个文件;若找不到,才 fallback 到旧名——但 fallback 行为不稳定,尤其在多配置或 monorepo 场景下容易漏读。
- 新建
eslint.config.js,内容必须是export default []形式 - 不要写
module.exports =,ESLint v9+ 不识别 - 示例最小可用配置:
export default [
{
files: ["**/*.js"],
rules: {
"no-console": "warn",
"no-unused-vars": "error"
}
}
];
editor.codeActionsOnSave 替代 editor.formatOnSave
很多人开启 "editor.formatOnSave": true 后发现代码被“乱修”——本质是 Prettier 和 ESLint 修复逻辑打架。ESLint 的 fix 只修规则类问题(如分号、引号、未使用变量),不负责缩进/换行等纯格式;Prettier 则相反。两者同时触发就会冲突。
- 关闭格式化接管:
"editor.formatOnSave": false - 启用 ESLint 专属修复:
"editor.codeActionsOnSave": {"source.fixAll.eslint": true} - 如果必须共存 Prettier,请确保已安装
eslint-config-prettier并在配置中禁用所有与格式相关的 ESLint 规则
最容易被忽略的是:VS Code 不会自动 reload ESLint 配置。改完 eslint.config.js 后,务必手动触发一次保存,或打开命令面板(Ctrl+Shift+P)运行 ESLint: Restart ESLint Server,否则修改不生效。











