【问题标题】:Meteor: How to know which template helper is throwing an exceptionMeteor:如何知道哪个模板助手抛出异常
【发布时间】:2015-02-26 03:34:51
【问题描述】:

在更改了代码中很多地方使用的 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)

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

【问题讨论】:

  • 您找到解决方案了吗?
  • 恐怕我从来没有这样做过。最终将事情分成更小的块,直到我隔离了问题。

标签: meteor


【解决方案1】:

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

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

并将它包裹在我要调试的每个模板助手周围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2015-01-06
    • 2014-11-27
    • 2013-02-18
    相关资源
    最近更新 更多