【发布时间】:2025-12-17 21:40:01
【问题描述】:
自从我升级到 Handlebars 4.7.6 后,我在尝试渲染我的预编译模板时遇到了错误。我将 js 运行时升级到相同的版本,但我的模板无法加载。
这是尝试渲染模板的代码:
var template = Handlebars.templates.index;
var rendered = template(data);
还有错误:TypeError: template is not a function
当我检查 4.7.3 编译模板的代码差异时,我发现旧版本处理对象创建的方式与新模板不同。在文件的开头,模板是不同的:
版本:4.7.3
!function(){var l=Handlebars.template;(Handlebars.templates=Handlebars.templates||{}).index=l({1:function(l,n,e,a,t){...
版本:4.7.6
!function(){var l=Handlebars.template;(Handlebars.templates=Handlebars.templates||{})["handlebars.index"]=l({1:function(l,n,e,a,t){...
如果我手动将 ["handlebars.index"] 更改为索引,那么我的模板会正确呈现。但是我不想每次编译新模板的时候都手动更改模板的代码。
我可以对我的代码进行更改以使其正常工作吗?
【问题讨论】:
-
检查您使用的是最新的运行时并且!检查预编译模板的名称。我做了一个快速检查,代码与您预期的工作非常相似。如果需要,我将提供一个示例。并检查页面加载时是否有任何错误,除了车把错误
-
@Drag13 我正在使用最新版本的 4.7.6 编译器和运行时。否则没有js错误,并且名称是正确的。您的运行时是否生成 ["handlebars.index"]=l 或 .index=l ?
-
我根本看不到这个。让我澄清一下,您是在 HTML 文件中还是在 Node.js 中使用此代码以防万一,这是我使用运行时进行测试的方式:
<script src="./node_modules//handlebars//dist/handlebars.runtime.min.js"></script> -
@Drag13 这是模板文件的javascript。
-
请问?不明白你的意思。也许您可以提供更多代码?