Meteor:如何知道哪个模板助手抛出异常

时间:2015-02-25 19:27:15

标签: meteor

在更改了代码中许多地方使用的Session变量的语义后,我留下了一个回归,我在页面加载时得到“模板助手中的异常”错误。

所以我搞砸了,我正在使用该变量的地方,我没有修改代码来处理新的语义。但我找不到......

回溯没有给我任何线索,因为它只有来自meteor javascript文件的条目,没有关于我的应用程序文件的信息:

 Exception in template helper: Error: $in needs an array
    at Error (native)
    at Object.ELEMENT_OPERATORS.$in.compileElementSelector (http://jesper-lab:3000/packages/minimongo.js?e8806aa7782b729b2517ebc0cd10b321667f1427:1887:15)
    at http://jesper-lab:3000/packages/minimongo.js?e8806aa7782b729b2517ebc0cd10b321667f1427:1569:19
    at Function._.each._.forEach (http://jesper-lab:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:164:22)
    at operatorBranchedMatcher (http://jesper-lab:3000/packages/minimongo.js?e8806aa7782b729b2517ebc0cd10b321667f1427:1549:5)
    at compileValueSelector (http://jesper-lab:3000/packages/minimongo.js?e8806aa7782b729b2517ebc0cd10b321667f1427:1453:12)
    at http://jesper-lab:3000/packages/minimongo.js?e8806aa7782b729b2517ebc0cd10b321667f1427:1432:9
    at Function._.each._.forEach (http://jesper-lab:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:164:22)
    at compileDocumentSelector (http://jesper-lab:3000/packages/minimongo.js?e8806aa7782b729b2517ebc0cd10b321667f1427:1415:5)
    at _.extend._compileSelector (http://jesper-lab:3000/packages/minimongo.js?e8806aa7782b729b2517ebc0cd10b321667f1427:1392:12)

有什么方法可以找出WHICH模板帮助器抛出此异常? (除了在所有这些中设置断点(数百......))

1 个答案:

答案 0 :(得分:1)

我不确定这是最好的方法,但我所做的是使用通用的try_catch函数:

@try_catch = (f) ->
    return (args) ->
        try
            f(args)
        catch e
            console.log e

并将其包装在我想要调试的每个模板助手周围。