Prettier搭配prettier-plugin-apex格式化VF页面报错:js_source_text未定义
解决Prettier+prettier-plugin-apex格式化部分Visual Force页面报错
js_source_text is not defined的问题 问题场景
在VS Code中使用Prettier配合prettier-plugin-apex格式化Salesforce文件时,多数Visual Force(.page)页面可正常格式化,但部分页面保存时触发报错:
[Error - 10:42:57 AM] Request textDocument/rangeFormatting failed. Message: Request textDocument/rangeFormatting failed with message: js_source_text is not defined Code: -32603
可能原因
- 目标页面内JS代码存在语法异常:比如
<script>标签内有未闭合的引号、括号,或语法错误,导致prettier-plugin-apex的JS解析模块无法正常识别内容,抛出未定义变量的错误。 - 插件解析逻辑兼容性问题:部分VF页面包含特殊JS写法(如过时语法、与VF标签混合的复杂嵌套),触发了prettier-plugin-apex的解析bug。
- 文件编码或隐藏字符问题:少数情况下,页面文件存在不可见特殊字符,干扰了解析器的内容读取。
解决方案
- 排查并修复页面内JS代码:
- 打开报错的.page文件,定位所有
<script>标签,检查内部代码的语法完整性:闭合所有引号、括号,修正语法错误。 - 确保
<script>标签正确闭合,没有与VF标签(如<apex:xxx>)产生嵌套冲突。
- 打开报错的.page文件,定位所有
- 简化页面内JS逻辑:将页面内复杂的JS代码提取到Salesforce静态资源的独立.js文件中,通过
<script src="{!URLFOR($Resource.YourJSFile)}"></script>引入,降低VF页面内的解析复杂度。 - 更新插件版本:执行以下命令更新Prettier和prettier-plugin-apex到最新版本,修复已知解析bug:
npm update prettier prettier-plugin-apex --save-dev - 临时调整Prettier配置:如果无法立即修复页面代码,可在项目根目录的
.prettierrc中为.page文件指定HTML解析器,规避JS解析报错(注意:此方法可能会忽略VF特定语法的格式化):{ "overrides": [ { "files": "*.page", "options": { "parser": "html" } } ] }
内容的提问来源于stack exchange,提问作者cyberspy
相关产品推荐
相关产品推荐

