Невозможно использовать избыточность-наблюдаемость с помощью Stencil @ one: ошибка «Конструктор класса Observable не может быть вызван без« нового »» в классе ActionsObservable - PullRequest
3 голосов
/ 29 мая 2019

У меня есть библиотека компонентов Stencil, использующая @ Stencil / redux, redux, redux-observable и redux-actions.Раньше все работало нормально, но я пытаюсь перейти на Stencil @ One (1.0.0-beta.5).

У меня сейчас ошибка при создании магазина Redux.Это конфигурация моего магазина:

import { Store, createStore, applyMiddleware } from 'redux';
import { createEpicMiddleware } from 'redux-observable';
import { rootEpic } from './epic';

const epicMiddleware = createEpicMiddleware();
export const ogodStore: Store<OgodState> = createStore(rootReducer, applyMiddleware(epicMiddleware));

epicMiddleware.run(rootEpic);

Ошибка возникает при вызове applyMiddleware и выглядит следующим образом:

TypeError: Class constructor Observable cannot be invoked without 'new'
    at new ActionsObservable (chunk-f18fe9c6.js:3744)
    at epicMiddleware (chunk-f18fe9c6.js:3830)
    at chunk-f18fe9c6.js:4579
    at Array.map (<anonymous>)
    at chunk-f18fe9c6.js:4578
    at createStore (chunk-f18fe9c6.js:4043)
    at chunk-f18fe9c6.js:4716

В течение многих лет я так запутался из-за различных типов и целей модуля javascript... Но вот что я знаю:

  • Эта ошибка вызвана этим конкретным кодом внутри наблюдаемой при редуксе:
(ActionsObservable.__proto__ || Object.getPrototypeOf(ActionsObservable)).call(this)
  • Используется call(this) для создания объекта ActionsObservable, который зависит от класса Observable rxjs
  • В моей конфигурации Typescript я использую созданный трафарет, и он остается тем же для новых проектов (модуль: 'esnext', target: 'es2017 ')

Observable из rxjs не поддерживает это ?!Это класс, который должен быть создан с использованием синтаксиса ES6 new, потому что он теперь поддерживается браузерами?

Я действительно хотел бы знать, если я должен создать проблему в GitHub-Observable Github?

Ответы [ 2 ]

1 голос
/ 10 июня 2019

проблема была создана, так как никто не ответил. Надеюсь, мы скоро получим новости об этом ...

0 голосов
/ 14 июня 2019

Я решил эту проблему по ссылке на github, предоставленной @Elvynia -

Установить redux-observable-es6-compat и импортировать -

import { createEpicMiddleware, combineEpics } from 'redux-observable-es6-compat';

вместо

import { createEpicMiddleware, combineEpics } from 'redux-observable';
...