TypeError: Sie lieferte ein ungültiges Objekt, wo ein stream zu erwarten war. Sie können Beobachten, Versprechen, Array oder Durchsuchbar
Ich versuche map
von einem service-Aufruf aber immer einen Fehler.
Sah abonnieren ist nicht definiert im Winkel 2? und er sagte, dass, um zu abonnieren, die wir brauchen, um wieder aus dem inneren der Betreiber. Ich habe return-Anweisungen als gut.
Hier ist mein code:
checkLogin(): Observable<boolean> {
return this.service.getData()
.map(
response => {
this.data = response;
this.checkservice = true;
return true;
},
error => {
//debugger;
this.router.navigate(['newpage']);
console.log(error);
return false;
}
)
.catch(e => {
return e;
});
}
Fehler melden:
TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable
Ich erhielt ein ähnliches Problem:
Ihr Rückgabetyp ist
You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
aber es passiert, während mein server läuft und ich wechselte zwischen Zweigen. Alles was ich tun musste, war meinen server neu starten und es ging Weg.Ihr Rückgabetyp ist
Observable<boolean>
. So werden alle return-Anweisungen zurückgeben sollte eine Beobachtbare von boolean. Wrap return-Anweisung mit of()
. Beispiel 1: return of(false)
Beispiel 2: return of(e)
InformationsquelleAutor Aakash Thakur | 2017-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
In deinem Beispiel-code, müssen Sie Ihre
map
Betreiber Empfang von zwei Rückrufe, wenn es sollten nur empfangen werden. Sie können Ihre error-handling code zu Ihrem catch-callback.Müssen Sie auch den import der
catch
undthrow
Betreiber.EDIT:
Beachten Sie, dass durch die Rückkehr
Observable.throw
in Ihrer catch-handler, die Sie nicht wirklich erfassen der Fehler - es wird immer noch die Oberfläche auf die Konsole.Error: Uncaught (in promise): [object ProgressEvent]
Sie können versuchen, ändern die
Observable.throw
Linie zuObservable.of
(und beinhalten den import). Das wird dazu führen, beobachten wieder den Fehler, aber es wird nicht behandeln Sie es wie ein Versager. (im Grunde genommen sind wir ein bisschen/aber-nicht-ganz schlucken der Fehler). Sehen, ob das behebt den Fehler aus der Konsole. Wenn es funktioniert, dann es zeigt auf die Methode getData() fehlschlägtHaben Sie Ihre Bearbeiten. Aber wie es zu lösen.
InformationsquelleAutor snorkpete
In meinem Fall der Fehler trat nur während der e2e-tests. Es wurde verursacht durch
throwError
in meinem AuthenticationInterceptor.Ich importierte es aus einer falschen Quelle, weil ich WebStorm die import-Funktion. Ich bin mit RxJS 6.2.
Falsch:
Richtig:
Hier der vollständige code der Abfangjäger:
InformationsquelleAutor Stevy
Sind Sie wieder eine Beobachtbare wo, wie dein code gibt nur einen booleschen Wert. So müssen Sie, wie unten
Wenn Sie mit einem anderen gemeinsamen service
checkservice
in Ihrem Fall können Sie einfach verwendenDadurch wird Ihr
checkLogin()
Funktion mit Rückgabetyp voidund man kann von
this.checkService
überprüfen Sie Ihren ZustandObservable<boolean>
denn ich habe zu nutzen es in einer anderen Funktion.was ist dein getData () - Funktion gibt?
getData() liefert
[object Object]{id: "1234", isAdmin: false, userName: "Lama", newid: Array[1]}
Sorry Bruder. Ich bin es nicht.
Ich werde nicht in der Lage zu reproduzieren oder Ihnen zeigen, dass mein Bildschirm, da es nicht ein home-Projekt, es ist etwas, das geheim ist und das ist nur ein Teil, wo ich das problem hatte.
InformationsquelleAutor Aravind
Wenn deine Funktion erwartet einen booleschen Wert zurückzugeben, nur dazu:
InformationsquelleAutor Daniel Eduardo Delgado Diaz
Habe ich schon vor diesem Problem, wenn Sie versuchen, einen Benutzer zu authentifizieren mithilfe von JSON Web Token. in meinem Fall ist es im Zusammenhang mit der Authentifizierung interceptor.
Senden einer Anfrage zur Authentifizierung einer Benutzer nicht haben, um ein token, da es noch nicht existiert.
Überprüfen Sie, dass Ihre Abfangjäger gehören:
Und Sie bieten
{'No-Auth':'True'}
zu Ihrem header der Anfrage wie dieser:InformationsquelleAutor Badis Merabet
Ich habe genau die gleiche Fehlermeldung, während ich meine unit-test und werfen beobachtbare Ausnahme nach mocking meine Dienste.
Ich entschloss mich, es durch die übergabe genaue Funktion und format in
Observable.throw
.Eigentlichen code aufruft, der service und die
subscribe
Daten zu erhalten. beachten Sie, dasscatch
zu handhaben, die400
Fehler.Wird der code in der service
Unit-Tests
Habe ich über den SomeService-und Rücksendung beobachtbare Daten und deren Ordnung, da es alle erforderlichen Methoden drin.
Dem obigen code ist okey aber wenn, wenn ich versuche zu testen, die Fang - /Fehler-Zustand, der durch die Weitergabe
Observable.throw({})
es war, zeigt mir die Fehler wie erwartet wurdeResponse
Art Rückkehr aus dem Dienst.Also unter service mocking Rückkehr war er mir diesen Fehler.
Also Korrigiert habe ich es durch die Replikation der genaue erwarteten Funktion in meiner Rückkehr Objekts, nicht die übergabe eines
Response
Art Wert.InformationsquelleAutor Aniruddha Das
, Ausgelöst durch eine verirrte Komma (
,
) in einem RxJSpipe(...)
Dem kompilieren nicht fangen diese zusätzliche Komma am Ende:
Wird es eine 'unsichtbare'
undefined
Betreiber, welche Schrauben das ganze Rohr nach oben und führt zu einer sehr verwirrende Fehlermeldung - was in diesem Fall nichts zu tun hat mit meinem eigentlichen Logik.InformationsquelleAutor Simon_Weaver