У меня есть библиотека компонентов 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 ... Но вот что я знаю:
- Эта ошибка вызвана этим конкретным кодом внутри redux-observable:
(ActionsObservable.__proto__ || Object.getPrototypeOf(ActionsObservable)).call(this)
- Он использует
call(this)
для создания объекта ActionsObservable, который зависит от классаObservable
rxjs - В моей конфигурации Typescript я использую созданный трафарет, и он остается тем же для новых проектов (модуль: 'esnext', цель: 'es2017')
Observable
из rxjs не поддерживает это ?! Это класс, который должен быть создан с использованием синтаксиса ES6 new
, потому что он теперь поддерживается браузерами?
Я действительно хотел бы знать, должен ли я создать проблему в наблюдаемом в редуксе Github?
2 ответа
проблема была создана, так как никто не ответил. Надеюсь, мы скоро получим новости об этом ...
Я решил эту проблему по ссылке на github, предоставленной @Elvynia -
Установите redux-observable-es6-compat и импортируйте -
import { createEpicMiddleware, combineEpics } from 'redux-observable-es6-compat';
Вместо того
import { createEpicMiddleware, combineEpics } from 'redux-observable';
Похожие вопросы
Новые вопросы
typescript
TypeScript - это типизированный надмножество JavaScript, которое компилируется в простой JavaScript. Он добавляет в JavaScript дополнительные типы, классы, интерфейсы и модули. Этот тег предназначен для вопросов, относящихся к TypeScript. Он не используется для ответов на общие вопросы по JavaScript.