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



在更改了代码中许多地方使用的Session变量的语义后,我将面临一个回归,在页面加载时会出现"模板助手中的异常"错误。

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

回溯没有给我任何线索,因为它只有来自流星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)

有没有什么方法可以找出是哪个模板助手抛出了这个异常?(除了在所有断点中放置断点(数百…))

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

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

并将它封装在我想要调试的每个模板助手中。

最新更新