You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Parcel编译Google Apps Script HTML模板时遇语法错误的解决咨询

问题描述

我尝试在App Sheet中向HTML模板传递变量,由于Google Apps Script的特性,需要用Parcel将代码编译为单个HTML文件。接收变量的代码如下:

<script>
 var doc_id = <?= doc_id ?>;
</script>

编译时触发如下错误:

🚨 Build failed.
@parcel/transformer-js: Expression expected

16 |     <script>
  > 17 |       var doc_id = <?= doc_id ?>;
  >    |                              ^
    18 |     </script>

想请教两种方案:要么让Parcel忽略该行错误,要么有其他可行的替代办法。

解决办法

方案1:给占位符添加引号,让语法合法

Parcel会把<script>标签内的内容当作标准JS解析,<?= doc_id ?>这种模板语法不属于合法JS,所以报错。给占位符加上单引号,让它变成合法的字符串字面量,Parcel就不会报错,而Google Apps Script渲染时依然能正常替换变量:

<script>
 var doc_id = '<?= doc_id ?>';
</script>

方案2:用Parcel的Raw加载器跳过解析

如果不想修改代码结构,可以给目标HTML文件指定Raw加载器,让Parcel直接原封不动打包,不解析其中的JS内容。
在导入该HTML文件时,使用如下写法:

import html from 'raw-loader!./your-template.html';

也可以在Parcel的配置文件中添加规则,让特定HTML文件默认使用Raw加载器。

方案3:临时将占位符改为注释,编译后替换

先把模板占位符写成JS注释,确保编译时语法合法,之后再用简单脚本替换回Google Apps Script的模板语法:

<script>
 var doc_id = /* <?= doc_id ?> */ '';
</script>

编译完成后,用Node.js脚本或者其他字符串替换工具,把/* <?= doc_id ?> */ ''替换成<?= doc_id ?>即可。

内容的提问来源于stack exchange,提问作者user1016976

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:16:04