«Вы указали неверный объект, в котором ожидался поток» при использовании rxjs6 и перекомпоновали componentFromStreamWithConfig - PullRequest
0 голосов
/ 21 декабря 2018

При использовании rxjs 6.3.3 и повторной компоновке componentFromStreamWithConfig я сталкиваюсь с ошибкой: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.

Я попытался предоставить пользовательский объект rxjsConfig для componentFromStreamWithConfig, как предлагалось в других вопросах, касающихсядля перекомпоновки и rxjs 6.

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 Ответ

0 голосов
/ 23 декабря 2018

Основная проблема, по-видимому, заключается в следующем:

  1. recompose polyfills Symbol.observable с помощью symbol-observable.
  2. только при наличии этого polyfill, rxjs будетраспознает объект, полученный от componentFromStream как Observable, в противном случае он выдает ошибку TypeError.

Мой обходной путь должен был импортировать recompose, прежде чем что-либо из rxjs и ошибка исчезнет.Очевидно, здесь важен порядок импорта, это действительно может свести с ума людей!

В вашем случае было бы достаточно изменить код , который использует ваш пользовательский componentFromStream:

  • , чтобы импортировать пользовательский componentFromStream перед любым импортом rxjs,
  • или явно заполнить Symbol.observable, импортировав symbol-observable, но снова поверх всехrxjs -imports.
...