2012-12-20 149 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

感謝亞歷克斯提出這個了!

相關問題