VSCode 1.49.2中TSX三元表达式格式错误问题求助
我之前也踩过类似的VSCode TSX格式化坑,结合你描述的细节——命令行prettier --write能正常格式化,但VSCode内切换格式化器都无效,TSX的single块有多余缩进而JSX完全正常——给你几个针对性的排查和解决方向:
强制VSCode Prettier插件使用本地版本
很多时候VSCode的Prettier插件自带的版本和你项目本地/全局安装的Prettier版本不一致,导致格式化行为出现差异。你可以在VSCode设置里搜索prettier.useLocalPrettier,将其设为true,这样插件会调用你项目里安装的Prettier(确保项目已通过npm install prettier --save-dev安装),和命令行使用的版本保持完全一致。检查是否存在隐藏的Prettier配置
虽然你提到没有.prettierrc配置,但别忘了检查package.json里的prettier字段,或者父目录中是否有继承来的Prettier配置文件(比如上级文件夹的.prettierrc)。这些隐藏配置可能在VSCode中生效,却被你忽略了。你可以尝试在项目根目录手动创建一个空的.prettierrc.json(内容填{}),强制覆盖继承的配置后再测试格式化。重启TypeScript语言服务
VSCode的TypeScript服务偶尔会缓存异常状态,间接影响格式化逻辑。打开命令面板(快捷键Ctrl+Shift+P/Cmd+Shift+P),输入TypeScript: Restart TS Server,重启后再尝试保存格式化TSX文件。确认默认格式化器的精确ID
有时候切换格式化器时可能选错了插件,比如有些第三方Prettier插件的ID不是官方版本。你可以在VSCode设置中直接指定editor.defaultFormatter为官方Prettier插件的ID,确保关联正确:"editor.defaultFormatter": "esbenp.prettier-vscode"临时禁用其他可能冲突的插件
除了ESLint,可能还有其他代码格式化类插件(比如TSLint、Stylelint等)在后台干扰TSX的格式化流程。可以尝试临时禁用所有非必要插件,只保留Prettier和TypeScript插件,再测试是否恢复正常。
如果以上方法都没解决,你可以尝试升级VSCode到最新版本(1.49.2确实比较旧了,后续版本修复了不少TSX格式化的bug),不过如果必须停留在这个版本,重点优先排查前两个方向,应该能解决大部分类似问题。
内容的提问来源于stack exchange,提问作者Carter

