模板里少了一个 end 标签,生成器报 Error: invalid template,没有文件名也没有行号,8 个模板文件只能一个个注释掉试。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
node bin/gen.js --module order --debug # 期望输出 templates/service.tpl:12 unexpected end of file
模板编译在外面包了一层 try,catch 之后重新抛了固定文案,原始错误和栈都丢了。这一点先确认清楚,后面就不用反复试。
「生成器报错信息」这类改动最怕改一半,回滚脚本先准备好,再动生产。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
具体做法是,catch 里保留原始错误对象 把文件名和行号带出去;批量渲染时逐个文件捕获 失败后继续并汇总;错误信息里附上模板路径和变量名;给模板加一个 lint 步骤 生成前先校验语法。
改完照着核一遍,故意删掉一个 end 标签 报错里能看到具体文件名和行号 不用逐个注释。
