我正在使用NGRX商店开发Angular 7应用程序。我已经在自己的Chrome浏览器中安装了Redux DevTools,以便可以在开发过程中使用它。
当我发现一个功能的行为有所不同时,我感到很困惑,这取决于是否在浏览器中启用了Redux DevTools 。在一种情况下,我遇到了错误,而在另一种情况下,一切正常。
确切的错误是:
TypeError: You provided an invalid object where a stream was expected.
You can provide an Observable, Promise, Array, or Iterable
幸运的是,我在this answer中发现了问题的根源-由于WebStorm的自动导入,我错误地导入了switchMap
:
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');
})
);