Muszę dołączyć ten błąd w pliku dziennika na zapleczu. Te błędy nie są przechwytywane w kanale2. Jak odczytać ten błąd? Jak odczytać błąd przeglądarki przy użyciu javascript lub angular2?
9
A
Odpowiedz
10
Jak wyjaśniono w tym MDN article, można złapać błędy runtime javascript w handlera window.onerror
zdarzeń i błędów ładowanie zasobów połów w określonym obsługi zdarzeń Przechwytywanie z window.addEventListener("error", fn, true)
.
Usługa może ustawić te procedury obsługi zdarzeń i zarejestrować błędy w tablicy. W razie potrzeby wyślesz zawartość tablicy do serwera. Obsługa mogłaby wyglądać następująco: mechanizm wykrywania
export class ErrorLogService {
private errors = new Array<any>();
constructor() {
let that = this;
window.onerror = function (msg, url, lineNo, columnNo, error) {
let string = msg.toLowerCase();
let substring = "script error";
if (string.indexOf(substring) > -1) {
console.log("Script Error: See Browser Console for Detail");
} else {
that.errors.push({
message: msg,
url: url,
line: lineNo,
column: columnNo,
error: error
});
}
return false;
};
window.document.addEventListener("error", (event: ErrorEvent) => {
if (event.target && (event.target as any).src) {
let url = (event.target as any).src;
this.errors.push({
message: "Resource not found",
url: url
});
} else {
this.errors.push({
message: "Unknown error",
error: event
});
}
}, true);
}
}
Błąd może być testowany w this jsfiddle.
0
można użyć następującego kodu
(function(console){
console.save = function(data, filename){
if(!data) {
console.error('Console.save: No data')
return;
}
if(!filename) filename = 'console.json'
if(typeof data === "object"){
data = JSON.stringify(data, undefined, 4)
}
var blob = new Blob([data], {type: 'text/json'}),
e = document.createEvent('MouseEvents'),
a = document.createElement('a')
a.download = filename
a.href = window.URL.createObjectURL(blob)
a.dataset.downloadurl = ['text/json', a.download, a.href].join(':')
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false,
false, false, 0, null)
a.dispatchEvent(e)
}
})(console)
źródło: https://plus.google.com/u/0/+UmarHansa/posts/G3VZ9sG9SCH
Możliwy duplikat: [? Przechwytywanie javascript console.log] (http://stackoverflow.com/questions/11403107/przechwytywanie-javascript-console-log) – abhishekkannojia
@abhishekkannojia Zastępują konsolę console.log, ale nie wprowadziłem console.log w żadnym miejscu. Czego chcę, to w pewnym przedziale przeczytam pełną konsolę przeglądarki, a następnie popchnę ją do backendu. – Rohit
następujący post jest konieczny do przeczytania, ponieważ wskazuje na problemy z różnymi przeglądarkami związane z 'window.onerror': [Przechwytuj i zgłaszaj błędy JavaScript za pomocą window.onerror] (https://blog.sentry.io/2016/01 /04/client-javascript-reporting-window-onerror.html) – deblocker