我正在尝试使用一个非常简单的stacktrace.js示例。我正在尝试利用printStackTrace()方法来实现这一点。
基本上,我调用的是一个buggy函数,它会在控制台中抛出一个错误和堆栈跟踪。但是,我希望在控制台中显示此错误和堆栈跟踪,并将其存储在一个字符串中,并打印该字符串。
例如,如果我运行此函数
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);但是它打印了一个我不理解的不同的堆栈跟踪。

使用printStackTrace方法的正确方式是什么?
发布于 2017-09-03 16:12:07
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。
发布于 2021-10-26 00:20:47
如果您使用的是stacktracejs 1.x,但无法使其正常工作,那么您可以这样使用它:
console.log( StackTrace.getSync() );就这样。
https://stackoverflow.com/questions/34001666
复制相似问题