【问题标题】:Debugging swig template engine, nodejs调试 swig 模板引擎,nodejs
【发布时间】:2015-08-13 09:40:02
【问题描述】:

有什么方法可以调试 node.js 的 swig 模板引擎,因为在某些情况下我没有得到发生错误的确切文件, 例如

{% set temp = JSON.parse('some random string') %}

这是我在上面的控制台中得到的:

2015-08-13T09:38:12.254Z - error: SyntaxError: Unexpected token s
at Object.parse (native)
at Object.eval [as tpl] (eval at <anonymous> (/home/saurabh/intl/via_node/node_modules/swig/lib/swig.js:498:13), <anonymous>:6:810)
at compiled (/home/saurabh/intl/via_node/node_modules/swig/lib/swig.js:619:18)
at Object.eval [as tpl] (eval at <anonymous> (/home/saurabh/intl/via_node/node_modules/swig/lib/swig.js:498:13), <anonymous>:27:611)
at compiled (/home/saurabh/intl/via_node/node_modules/swig/lib/swig.js:619:18)
at /home/saurabh/intl/via_node/node_modules/swig/lib/swig.js:559:20
at /home/saurabh/intl/via_node/node_modules/swig/lib/swig.js:690:9
at fs.js:268:14
at Object.oncomplete (fs.js:107:15)

没有提及发生错误的模板文件。

【问题讨论】:

  • 严格来说,这不是 Swig/模板问题,而是向JSON.parse() 提供不正确数据的问题。我不认为 Swig 可以捕捉到它们以使其显示它发生的确切位置(无需将每个生成的行包装在 try/catch 块中)。
  • 我在 swig 模板文件中找不到任何 try catch 的规定。
  • 没有。我认为在模板中解析 JSON 有点反模式,因此 Swig 中缺乏任何功能来缓解解析过程中发生的任何问题。您可以创建自定义过滤器或标记来捕获错误,但这听起来比将 JSON 解析移动到您的 JS 代码更像是一种折磨。

标签: javascript node.js swig-template


【解决方案1】:

已编辑:您说得对,问题是“一些随机字符串”,您不能 JSON.parse 字符串不是 JSON。

所以你应该有这样的东西:

{% set temp = JSON.parse('{"test": true}') %}

【讨论】:

  • 我用过,我用过。 set temp 是错误的,它不是 Javascript,并且使用 {% %} 语法,您正在模板中执行 javascript。可能您需要阅读更多内容。
  • 你确定 var 对你有用吗,因为我试过了,在我的情况下它给出了语法错误。
  • 我给这个字符串只是为了产生错误,问题是 swig 模板引擎无法检测错误发生在文件的哪一行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
相关资源
最近更新 更多