2015-11-30 66 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

相关问题