2015-11-30 3 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); 

Но это печать другой StackTrace, что я не понимаю.

enter image description here

Что такое правильный способ использовать метод printStackTrace?

+0

Вы говорите об этом https://github.com/stacktracejs/stacktrace.js/blob/master/README.md? Если да, проверьте документы.^не так, как вы его используете? – brandonscript

+0

Да, это то, о чем я говорю, но я использую более старую версию stacktrace, которая имеет функцию printStackTrace(). Документы на этой странице 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.

Смежные вопросы