2016-06-13 15 views
0

Ich schreibe eine Reaktion Anwendung mit Router1. Hier ist, wie der endgültige Bezug wie folgt aussieht:Jemand isst meine Fehler, wie kann ich es debuggen?

router 
    .renderResult() 
    .forEach(() => { 
    window.ga('send', 'pageview', window.location.pathname); 
    }); 

Dieser Strom wirft einen Fehler (nicht verarbeiteter Fehler), aber ich sehe es nicht in der Konsole. Wenn ich in forEach onError callback setze - kann ich Fehler protokollieren.

Wenn ich Fehler in dem Strom zu beheben, und erstellen Sie in einen anderen Strom, die einen Fehler wirft, ich sehe nicht, die Nachricht in der Konsole:

router 
    .renderResult() 
    .forEach(() => { 
    window.ga('send', 'pageview', window.location.pathname); 
    Observable.throw(1).subscribe(); 
    }); 

Und selbst wenn ich Observable.throw(1).subscribe(); mit einfachen throw 1 ersetzen - Ergebnis Das gleiche, keine Nachrichten in der Konsole und Stream ist kaputt.

Aber wenn ich Fehler im Stream beheben, und einen anderen Stream erstellen, der einen Fehler nach einer gewissen Zeitüberschreitung auslöst, sehe ich die Nachricht "rx.all.js: 77 Uncaught 1", die groß ist.

router 
    .renderResult() 
    .forEach(() => { 
    window.ga('send', 'pageview', window.location.pathname); 
    setTimeout(() => Observable.throw(1).subscribe(), 1000); 
    }); 

Also standardmäßig rx wirft unbehandelte Ausnahmen, aber nicht in diesem Fall, warum? Wer isst meine Fehler? Irgendwelche Ideen wie kann ich es debuggen?

+0

Laufen in Firefox? – trincot

+0

@trincot nein, Chrome. Eigentlich ist in jedem Browser (Chrome, Firefox, Safari) das Verhalten gleich. Gibt es etwas Besonderes an Firefox? –

+6

om nom nom nom ... alle Ihre leckeren Fehler zu essen: P –

Antwort

0

Also ich habe gefunden wer meine leckeren Fehler gegessen hat - [email protected] Issue is already fixed und wird in der nächsten Version veröffentlicht werden.

Hier ist Beispiel dafür, wie Sie Fehler Superagent füttern können:

import { Observable } from 'rx'; 
import superagent from 'superagent'; 

const request = superagent.get('/'); 
Observable.defer(
    Observable.fromNodeCallback(request.end, request, res => res.body) 
).subscribe(() => { 
    throw new Error('tasty error'); 
});