Я работаю над приложением Angular 7, используя магазин NGRX.Я установил Redux DevTools в своем браузере Chrome, чтобы использовать его во время разработки.
Я был более чем озадачен, когда заметил, что функция ведет себя по-разному, в зависимости от того, включен ли Redux DevTools в браузере .В одном случае я получал ошибку, а в другом - все работало нормально.
Точная ошибка:
TypeError: You provided an invalid object where a stream was expected.
You can provide an Observable, Promise, Array, or Iterable
К счастью, я нашел корень проблемы в этом ответе - я неправильно импортировал switchMap
из-за автоматического WebStormimport:
import { switchMap } from 'rxjs/internal/operators';
вместо
import { switchMap } from 'rxjs/operators';
Однако я до сих пор не могу понять, что Redux DevTools имеет к нему отношение и почему мой код работал так, как будто я импортировал switchMap
правильно, когда инструмент был включен, и наоборот - он вызывал ошибку (как это обычно и следовало делать), когда он был отключен.
Я сомневаюсь, что этот код будет очень полезен здесь, но это тот, где произошла фактическая ошибка.
return this._http
.post(url, body, { headers })
.pipe(
// This switch map and the throwError function were causing the error.
switchMap((response: any) => {
// Please, do ignore the logic itself. There's a reason behind it.
const { data } = response;
return !!data ? of(data) : throwError('Invalid arguments');
})
);