"You provided an invalid object where a stream was expected" 当使用 rxjs6 和 recompose 的组件 FromStream WithConfig

"You provided an invalid object where a stream was expected" when using rxjs6 and recompose's componentFromStreamWithConfig

当使用 rxjs 6.3.3 并重构 componentFromStreamWithConfig 时,我遇到了错误:You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.

我已经尝试按照与 recompose 和 rxjs 6 有关的其他问题中的建议向 componentFromStreamWithConfig 提供自定义 rxjsConfig 对象。

import "symbol-observable";
import {
  componentFromStreamWithConfig,
  createEventHandlerWithConfig
} from "recompose";
import { from } from "rxjs";

const rxjsConfig = {
  fromESObservable: from,
  toESObservable: stream => stream
};

export const createEventHandler = createEventHandlerWithConfig(rxjsConfig);
export const componentFromStream = componentFromStreamWithConfig(rxjsConfig);

导出的 componentFromStream 在各种组件中以典型方式使用。

考虑到 rxjs 6 配置,我希望它能工作——但是 fromESObservable 似乎是个问题(堆栈跟踪指向 Object.from [as fromESObservable]

潜在的问题似乎是:

  1. recompose polyfills Symbol.observable 通过 symbol-observable.
  2. 仅当此 polyfill 存在时,rxjs 将从 componentFromStream 接收到的对象识别为 Observable,否则会抛出 TypeError。

我的解决方法是在 rxjs 的任何内容之前导入 recompose,错误消失了。 显然导入的顺序在这里有关联,这真的有可能让人发疯!

在您的情况下,更改使用您的自定义 componentFromStream:

的代码 就足够了
  • rxjs
  • 的任何导入之前导入您的自定义 componentFromStream
  • 或通过导入 symbol-observable 显式填充 Symbol.observable,但又在所有 rxjs 导入之上。