prettier和eslint互相报错因职责重叠:prettier管样式,eslint默认启用格式类规则,配置不一致导致冲突;应禁用eslint中quotes、semi等格式规则,或使用eslint-config-prettier插件并置于extends末尾,同时在vscode中设prettier为默认格式化器。

为什么Prettier和ESLint会互相报错
因为Prettier负责代码样式(比如缩进、引号、换行),而ESLint默认启用大量格式类规则(如quotes、semi、indent),两者职责重叠,且规则配置不一致时就会打架——ESLint提示“缺少分号”,Prettier却自动删掉它;ESLint要求单引号,Prettier被设成双引号,保存后反复来回改。
关闭ESLint中所有格式类规则(最直接有效)
核心思路:让ESLint只管逻辑/安全/可维护性问题,把格式交给Prettier。需要在ESLint配置中禁用所有与格式相关的规则。
- 在
.eslintrc.js或.eslintrc.cjs的rules里显式关掉冲突项:"quotes": "off", "semi": "off", "comma-dangle": "off", "no-mixed-spaces-and-tabs": "off", "indent": "off", "space-before-function-paren": "off", "arrow-spacing": "off"
- 更省事的方式是使用官方推荐的插件:
eslint-config-prettier,它会一键关闭所有和Prettier冲突的规则 - 安装后,在
extends数组末尾加上"prettier"(注意必须放最后,否则会被前面的配置覆盖)
确保VSCode真正用Prettier做保存时格式化
很多人配了但没生效,是因为VSCode没把格式化器指定为Prettier,或者ESLint插件抢在Prettier前执行了保存操作。
- 检查项目根目录是否有
.prettierrc(或prettier.config.js),内容至少包含基本偏好,例如:{"semi": true, "singleQuote": true, "tabWidth": 2} - 在VSCode设置里搜
format on save,确认已开启 - 右键编辑器 → “Format Document With…” → 选“Configure Default Formatter” → 选
esbenp.prettier-vscode - 如果还冲突,检查
settings.json里有没有"eslint.format.enable": true——这个选项会让ESLint插件也尝试格式化,必须删掉或设为false
遇到“Prettier not found”或格式化完全不触发
常见于全局安装Prettier但项目里没装,或VSCode工作区识别错了Node环境。
- 优先在项目本地安装:
npm install --save-dev prettier eslint-config-prettier - 不要依赖全局Prettier:VSCode的Prettier插件默认优先找项目
node_modules下的版本 - 如果用了pnpm,确认
node_modules/.pnpm路径没被VSCode忽略(某些工作区设置会排除.pnpm) - 重启VSCode窗口(不是仅重载窗口),尤其在刚安装完依赖后——插件常缓存了旧的模块解析结果
eslint-config-prettier没加在extends末尾,以及VSCode默认格式化器仍指向ESLint而非Prettier——这两处不动,其他都配对也没用。











