vs code 新版本需手动指定默认格式化工具:通过命令面板运行“format document with... > configure default formatter”选择 prettier 或 eslint 插件;否则 shift+alt+f 无响应,且语言专属设置、插件冲突、本地配置文件及 typescript 依赖缺失等均会导致格式化异常。

格式化快捷键失效了,按 Shift+Alt+F 没反应?
新版本 VS Code 默认禁用了“自动注册格式化提供者”,哪怕你装了 Prettier 或 ESLint 插件,Shift+Alt+F(Windows/Linux)或 Shift+Option+F(macOS)也可能完全没反应——不是快捷键错了,是格式化能力根本没被激活。
必须手动指定默认格式化工具:
- 打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P),输入Format Document With...,回车 - 选
Configure Default Formatter... - 从列表里选你实际在用的插件,比如
esbenp.prettier-vscode或dbaeumer.vscode-eslint
这一步漏掉,所有后续设置都白搭。VS Code 不再像老版本那样“猜”你用哪个格式化器。
editor.formatOnSave 开了但保存不格式化?
常见原因是语言专属设置覆盖了全局配置。比如你在 settings.json 里写了 "editor.formatOnSave": true,但 JavaScript 文件仍不格式化,大概率是 "[javascript]": { "editor.formatOnSave": false } 这类语言块把它关掉了。
检查和修复方法:
- 打开设置(
Ctrl+,),右上角点“打开设置 (JSON)”图标 - 搜索
formatOnSave,确认没有语言块显式设为false - 如果要用 ESLint 做保存时格式化,得额外加配置:
"eslint.format.enable": true,否则vscode-eslint默认只校验、不格式化
注意:Prettier 插件默认启用格式化,但 ESLint 插件需要手动开这个开关,否则它只报错不修。
格式化后缩进/引号/分号全乱了?
这是插件冲突的典型表现:Prettier 和 ESLint 同时启用,又没对齐规则。比如 Prettier 强制单引号,ESLint 却配了 quotes: ["error", "double"],VS Code 会随机选一个执行,结果不可控。
稳妥做法只留一个主力格式化器:
- 纯前端项目,优先用
Prettier做统一风格,关掉 ESLint 的格式化:"eslint.format.enable": false - 需要严格代码质量检查时,让 ESLint 管规则、Prettier 管格式,用
eslint-config-prettier关闭 ESLint 中与 Prettier 冲突的规则 - 检查
.prettierrc和.eslintrc.js是否存在本地配置,它们会覆盖 VS Code 设置
本地配置文件的优先级高于用户设置,改了 VS Code 设置却没效果,八成是项目里有 .prettierrc 在起作用。
TypeScript 文件格式化报错 Cannot find module 'typescript'
VS Code 自带的 TS 语言服务不负责格式化,它依赖项目本地安装的 typescript 包。如果项目没装,或者装在了错误位置(比如全局装了但工作区没识别),就会报这个错。
解决路径很直接:
- 进项目根目录,运行
npm install -D typescript(或yarn add -D typescript) - 确认
node_modules/typescript目录存在 - 重启 VS Code 窗口(仅重载窗口不够,要彻底关再开)
- 如果用 pnpm,确保启用了
node-linker=hoisted或检查pnpm store路径是否被识别
这个错不会出现在 JS 文件上,只针对 TS —— 因为格式化 TS 必须调用 tsserver,而它不在 VS Code 安装包里,必须现场找。










