shift+alt+f没反应是因为prettier未绑定到javascript语言,需在.vscode/settings.json中配置"[javascript]": {"editor.defaultformatter": "esbenp.prettier-vscode", "editor.formatonsave": true},并确保已安装prettier包且.prettierrc语法正确。

Shift+Alt+F 按下没反应?先确认 Prettier 是否真正接管
不是插件没装,而是 VSCode 根本没把 esbenp.pretterr-vscode 当作 JavaScript 文件的格式化器。右下角状态栏打开一个 .js 文件,如果显示的是 JavaScript Language Features 或 None,说明链路断了。
必须在项目根目录的 .vscode/settings.json 中显式绑定语言块:
{
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
别只写顶层 "editor.defaultFormatter" —— 它对 [javascript] 这类语言块无效;也别依赖 GUI 点击“Configure Default Formatter”,容易被工作区设置覆盖。
保存后代码没变?检查 formatOnSave 是否被静默关闭
editor.formatOnSave 是个开关,但它的生效范围只限于当前语言块。常见陷阱是:全局设了 true,却在 [javascript] 块里写了 "editor.formatOnSave": false,后者会直接覆盖前者。
正确做法是把开关也放进语言块里:
{
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}
}
改完必须重启 VSCode 窗口(不是重载),否则部分设置不加载。
Prettier 报错 “Failed to load module 'prettier'”?本地 CLI 缺失
esbenp.prettier-vscode 插件本身不带格式化引擎,它只是调度器,需要调用本地安装的 prettier 包。没装包,就会在开发者工具 Console 里看到这个错误。
执行以下命令补上依赖:
-
npm install --save-dev prettier(推荐,版本可控) - 或
yarn add -D prettier - 避免全局安装:
npm install -g prettier在 nvm 或某些 Linux 环境下常因路径问题失效
若用 pnpm 或 yarn v4+,还需加一行配置:"prettier.prettierPath": "./node_modules/prettier/index.cjs"。
ESLint 和 Prettier 一起用,代码缩进来回跳?分工没划清
典型现象:保存一次加了分号,再保存又被删掉;对象属性换行反复跳动。这不是 bug,是两个工具都在改格式。
必须做三件事:
- 安装
eslint-config-prettier:npm install --save-dev eslint-config-prettier - 在
.eslintrc.js的extends数组末尾加上"prettier"(顺序不能错) - 关掉 ESLint 的格式能力:
"eslint.format.enable": false(VSCode 设置中)
别在 .eslintrc 里写 "semi": "error" 这类格式规则 —— Prettier 已经管了,ESLint 只负责逻辑和潜在错误。
最易被忽略的一点:Prettier 配置文件(如 .prettierrc.json)里一个多余的逗号、一个错位缩进,都会让它静默退回到默认值(semi: true, tabWidth: 2),而不是报错提醒你。











