2015-11-30 105 views
3

我試圖得到一個非常簡單的stacktrace.js例子工作。我試圖利用printStackTrace()這樣做。如何獲得簡單的stacktrace js示例工作?

基本上,我打電話給控制檯中引發錯誤和堆棧跟蹤的馬車功能。但是,我希望在控制檯中顯示的錯誤和堆棧跟蹤存儲在一個字符串中,並取而代之地打印該字符串。

例如,如果我運行此功能

function foo() { 
    var x = y; 
} 

我得到一個未捕獲引用錯誤y is not defined

我需要這個存儲在字符串中來代替。

到目前爲止,我已經試過以下

var error = null; 
function foo(){ 
    try { 
     var x = y; 
    } catch(e) { 
     error = printStackTrace(e); 
    } 
} 
foo(); 
console.log(error); 

但它打印不同的堆棧跟蹤,我不明白。

enter image description here

什麼用printStackTrace方法正確的方法是什麼?

+0

你在說這個https://github.com/stacktracejs/stacktrace.js/blob/master/README.md嗎?如果是這樣,請檢查文檔。 ^不是你怎麼使用它? – brandonscript

+0

是的,這就是我所說的,但我使用的是具有printStackTrace()函數的舊版本的stacktrace。 該github頁面中的文檔沒有幫助。我需要一個現場和簡單的例子來玩弄。我在互聯網上看到的所有例子似乎都太難理解了。 我需要一個基本的工作範例。 –

+2

我建議使用該項目的最新版本,以便您可以使用當前(以及看起來非常健壯的)文檔。 – brandonscript

回答

0

Try something like

window.onerror = function(msg, file, line, col, error) { 
    var callback = function(stackframes) { 
     var stringifiedStack = stackframes.map(function(sf) { 
     return sf.toString(); 
     }).join('\n'); 
     alert('msg: ' + msg + ' line: ' + line + ' col: ' + col + ' error: ' + error + ' file:' + file); 
    }; 
    StackTrace.get().then(callback) 
    }; 

工作實例:

window.onerror = function(msg, file, line, col, error) { 
 
    StackTrace.fromError(error).then(callback).catch(errback); 
 
} 
 
var errback = function(err) { console.log(err.message); 
 
}; 
 
var callback = function(stackframes) { 
 
    var stringifiedStack = stackframes.map(function(sf) { 
 
     return sf.toString(); 
 
    }).join('\n'); }; 
 
function fault() { 
 

 
alert('Error will be invoked!') 
 
    throw "Test Error" 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/stacktrace.js/2.0.0/stacktrace.js"></script> 
 

 
<input id="a" type="button" value="Test Call!" onClick="fault();" />

但似乎他們有一個bug

相關問題