javascript - 检测handlebars.js 解析/语法错误。 (客户端模板)

标签 javascript handlebars.js client-side

我正在创建客户端 Handlebars 的模板编辑器。基本上,屏幕的一半是文本编辑器,另一半是预览窗口。文本编辑器中的内容在被 handlebars.js 解析后记录到预览窗口中。 ,在此过程中应用一些变量。

每当我使用 handlebar's expression 出现任何语法错误时(例如输入 {name}} 而不是 {{name}}),DevTools 中会出现一条控制台消息。这些消息可能如下所示:

Parse error on line 4:
...m"><p>Hola, {{name}</p></div></body>
---------------------^
Expecting 'CLOSE_RAW_BLOCK', 'CLOSE', 'CLOSE_UNESCAPED', 'OPEN_SEXPR', 'CLOSE_SEXPR', 'ID', 'OPEN_BLOCK_PARAMS', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', 'SEP', got 'INVALID'

我希望能够检测此错误是否触发,并显示错误消息以警告用户。我尝试重写 javascript Error() 类,但没有成功,但它会引发各种错误并且 Handlebars 崩溃。有什么方法可以访问这些错误吗?

最佳答案

您可以捕获错误然后显示它。像这样的事情:

var template = Handlebars.compile('<p>Hola, {{name}</p>');
try {
  template();
} catch (error) {
  var encodedError = error.message.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
    return '&#' + i.charCodeAt(0) + ';';
  });
  document.write('<pre>' + encodedError + '</pre>');
}
<script src="https://s3.amazonaws.com/builds.handlebarsjs.com/handlebars.min-v4.7.7.js"></script>

(顺便说一句, here 是我借用 html 实体编码的地方。)

关于javascript - 检测handlebars.js 解析/语法错误。 (客户端模板),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35235145/

相关文章:

javascript - 如何使用 JavaScript 从表格中获取单元格值?

javascript - 如何将数据附加到 fetch() 请求并通过响应取回数据?

javascript - 在 Handlebars "(generated application controller)"helper 中显示 "#each"而不是值内容

javascript - ASP.NET Javascript 输入错误

javascript - 上传和读取文件客户端, Angular 2

javascript - 物化滑动选项卡在模态中不起作用

javascript - 从函数参数中获取图像名称

javascript - 如何使用 HandlebarJS 加载多个模板

javascript - Ember.js jquery 循环幻灯片 : zero elements found error

Javascript 等效于 Java 的 Locale 包,或客户端呈现语言/脚本/国家/地区代码的方法