VSCode默认不格式化.js文件,根本原因是未在[javascript]语言块中绑定Prettier为默认格式化器、未安装本地prettier包、且缺少有效.prettierrc配置;三者缺一不可。

VSCode 默认不格式化 .js 文件,哪怕装了 Prettier 插件也毫无反应——根本原因是没绑定到 javascript 语言专属配置,且没装本地 prettier 包。
为什么保存后完全没格式化?
VSCode 对 .js 文件默认用内置的 vscode.typescript-language-features 格式器,Prettier 插件不会自动接管。右下角状态栏显示 ESLint 或 None,就说明绑定失败。
-
editor.formatOnSave放在全局设置里无效,必须写在[javascript]语言块中 -
editor.defaultFormatter的值必须是"esbenp.prettier-vscode",写成prettier或prettier-vscode都会失败 - Prettier 扩展本身不含 CLI,它只调用你项目里安装的
prettier包;没装会静默跳过,控制台可能报Failed to load module 'prettier'
必须做的三件事(缺一不可)
不是“装插件 + 开开关”就能跑通,而是三个环节必须对齐:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 在项目根目录运行
npm install --save-dev prettier(推荐局部安装,避免nvm或权限问题导致路径找不到) - 确保
.vscode/settings.json中有明确的[javascript]块,内容如下:
{
"[javascript]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
- 加一个最小可用的
.prettierrc(哪怕只写{"semi": false}),否则 Prettier 会回退到默认规则(比如强制加分号),和 Node.js 社区习惯冲突
和 ESLint 共存时怎么避免互相覆盖?
如果同时用了 ESLint,别让两者都抢着改代码。Prettier 负责格式(空格、引号、换行),ESLint 负责逻辑修复(var → const、no-unused-vars 等)。
- 关掉
editor.formatOnSave,否则 Prettier 会无脑重排,可能抹掉 ESLint 刚修好的内容 - 启用
"editor.codeActionsOnSave": {"source.fixAll.eslint": true}—— 这才是 ESLint 自动修复的唯一有效方式 - 在 ESLint 配置里集成 Prettier:
eslint-plugin-prettier+eslint-config-prettier,而不是让它单独跑 - 确保
eslint.format.enable为true,这样 ESLint 才会在有可修复规则时介入格式化请求
容易被忽略的细节
配置文件名和导出方式必须匹配 Node.js 项目的模块系统:
- 如果
package.json里写了"type": "module",.prettierrc必须叫.prettierrc.js并用export default {} - 如果是 CommonJS 项目(默认),用
.prettierrc.cjs并用module.exports = {} -
.prettierignore至少得包含node_modules/和dist/,否则格式化时卡死是常态 - 多根工作区(multi-root workspace)中,每个子文件夹必须各自有
.prettierrc和prettier包,VSCode 不会跨文件夹继承

















