2017-11-13 19 views
1

私はreactアプリケーションとwebpackを束縛するためにredux-observableを使用しています。私はreactとwebpackで動作しない単一のrxjs演算子をインポートする

import 'rxjs/add/operator/mapTo'; 

ようrxjsから特定のオペレータを含む場合

それは動作し、エラー

TypeError: action$.ofType(...).mapTo is not a function. 

をスローしかし、私は完全なrxjsライブラリが含まれている場合、それは

import 'rxjs'; 
の作品はありません

特定の演算子をインポートするとき、jsバンドルにmapToコードが含まれていますが、メソッドはnoですObservableプロトタイプに含まれるようになりました。私はバンドルのためにwebpackを使用しています。 webpackの特定の演算子をインポートするために特別な処理を行う必要がありますか?

コード

import { combineEpics } from 'redux-observable'; 
import { BehaviorSubject } from 'rxjs/BehaviorSubject'; 
import 'rxjs/add/operator/mergeMap'; 
import 'rxjs/add/operator/mapTo'; 

const PING = 'PING'; 
const PONG = 'PONG'; 

const pingEpic = action$ => { 
    const obser = action$.ofType(PING); 
    return obser.mapTo({ type: PONG }); 
} 

export const epic$ = new BehaviorSubject(combineEpics(pingEpic)); 
export const createRootEpic = (action$, store) => 
epic$.mergeMap(epic => 
    epic(action$, store) 
); 

更新

mapTo方法はBehaviorSubjectオブジェクトに利用可能である(epic$.mapToが利用可能である)ではないにActionsObservableオブジェクト(action$.mapToは、関数ではありません) 。

+0

rxjs/add/operator/switchMap ";'を試しましたか? – msanford

+1

@msanford 'switchMap'の代わりに' MapTo'を反映する質問を更新しました。 –

+0

'webpack.config.js'に、' [""、 "を含む[' resolve.extensions'](https://webpack.github.io/docs/configuration.html#resolve-extensions)の配列を追加してください。 webpack.js "、" .web.js "、" .ts "、" .js "、" .json "]'と入力します。それが助けになりましたか? – msanford

答えて

0

問題は、誤って2つのRxJSのコピーがある可能性が高いです。これはいくつかの状況で発生する可能性がありますが、具体的にはa recently reported issue in rxjsになる可能性が高いです。この特定の問題は5.5.1で修正されました(5.5.2が最新です)。

RxJS 5.5.1以上がインストールされていることを確認してください。ノード範囲が広い場合は、node_modulesを削除して、新しいバージョンをローカルに取得する必要があります。また、node_modules/rxjs/package.jsonの"version"フィールド(通常は最下部)を確認することでトリプルチェックが可能です

+0

すべてのパッケージを再インストールして、RxJS(存在する場合)の2つのコピーを削除し、raxjsを5.5.2に更新しました。しかし、それは動作しませんでした。 –

+0

私は 'BehaviorSubject'を使って叙事詩を非同期に追加しています。 rxjs/add/operator/mapTo '; '演算子' import'をインポートすると、 'BehaviorSubject'オブジェクトには使用できますが、' ActionsObservable'オブジェクトには使用できません。 –

+0

こんにちは@PranabGupta私はあなたが私の答えを受け入れることを参照してください、それは仕事を終えたか? – jayphelps