VS Code「保存时格式化」破坏ERB内JavaScript代码块问题求助
问题描述
在ERB文件中编写以下代码块:
<pre><code>let hide_registration = <%= @user.skip_registration? %> </code></pre>
保存后代码被错误格式化,ERB标签的尖括号与百分号之间被插入空格,导致代码失效:
<pre><code>let hide_registration = < %= @user.skip_registration ? % > </code></pre>
当前使用的ERB扩展为Simple Ruby ERB v0.2.1,已关闭「保存时格式化」功能,希望解决该问题以重新启用自动格式化,同时需要定位并移除导致问题的格式化工具。
解决方案
1. 定位问题格式化工具
- 检查默认格式化器:打开编辑器设置(VS Code按
Ctrl+,),搜索「Default Formatter」,查看ERB文件对应的默认格式化器是否为Simple Ruby ERB,或是其他关联工具(如Prettier、Ruby官方格式化器等)。 - 排查冲突扩展:在扩展面板中搜索ERB相关扩展,除Simple Ruby ERB外,暂时禁用其他可能处理ERB格式化的扩展(如ERB Formatter、Ruby等),保存文件测试是否还会出现格式错误,以此定位问题工具。
2. 修复或替换问题工具
- 检查扩展配置:找到Simple Ruby ERB扩展,进入其设置页面,查看是否有保留ERB标签紧凑格式的配置项,若有则开启对应设置。
- 升级或替换扩展:若该扩展无相关配置且未修复此bug,尝试升级到最新版本;若仍无效,替换为更稳定的ERB格式化扩展(如ERB Formatter/Beautifier)。
3. 临时规避方案
若暂时无法更换工具,可在目标代码块前后添加格式化忽略注释,阻止工具修改该部分代码(需确认你的格式化工具支持此注释规则):
<!-- prettier-ignore --> <pre><code>let hide_registration = <%= @user.skip_registration? %> </code></pre> <!-- prettier-ignore-end -->
内容的提问来源于stack exchange,提问作者pkilpo
相关产品推荐
相关产品推荐

