2012-12-20 77 views
3

我试着TraceKit自动向服务器报告Javascript错误。它的工作原理与堆栈跟踪除外。它只包含一个元素:TraceKit JavaScript库的完整堆栈跟踪

TraceKit.report.subscribe(function(stackInfo) { alert(stackInfo.stack.length);}); 

function foo() { 
    bar(); 
} 

function bar() {             
    throw "oops"; 
} 

foo(); 

该警报显示'1'。我也用相同的代码创建了a JSFiddle;

为什么我没有得到完整的堆栈跟踪?我已经使用Chrome和Firefox进行了测试。

回答

3

现在,您需要将throw "oops";更改为throw new Error("oops");然后您应该获得完整的堆栈跟踪。

将来,TraceKit可以通过重新抛出一个错误并相应修复堆栈跟踪来解决这个问题。这的jsfiddle节目再扔得到真正的堆栈跟踪:http://jsfiddle.net/DevinRhode2/dAYmJ/1/

的代码有:

try { 
    function foo() { 
    bar(); 
    } 

    function bar() {             
    throw "oops"; 
    } 

    foo(); 
} catch (e) { 
    console.log(e, e.message, e.stack); //oops undefined undefined 
    try { 
    throw new Error(e); 
    } catch (e) { 
    console.log(
     e,  e.message, e.stack);/* 
     Error {} "oops"  "Error: oops 
     at file://localhost/Users/devinrhode2/Desktop/test.html:23:13" 
    */ 
    } 
}​​​​​​​ 

其他讨论TraceKit在GitHub上的位置:https://github.com/occ/TraceKit/issues/23

感谢亚历克斯提出这个了!

相关问题