web-dev-qa-db-ja.com

RXJS:TypeError:this._subscribeは関数ではありません

ionic 3.8アプリを3.9.2に移行しています。この移行にはRXJS 5.5へのアップデートが含まれています

現在このエラーが発生しています:

TypeError: this._subscribe is not a function. (In 'this._subscribe(sink)', 'this._subscribe' is an instance of t)

何時間ものデバッグの結果、このコード部分がエラーに関連していることがわかりました。

protected observeConnectionState() {

    // rxjs/observable/of
    of(new Event('disconnect'))
        .pipe(
            // rxjs/operators/merge
            merge(connect$),
            merge(disconnect$),

            // Map eventname to string (rxjs/operators/map)
            map((e: IEvent) => {
                return e.eventName == 'connect' ? 'connected' : 'disconnected';
            })
        )
        // Apply to class context
        .subscribe((newConnectionState) => {
            // this.connectionState$ is a BehaviorSubject
            this.connectionState$.next(newConnectionState);
        });
}

追加情報

9
tmuecksch

さて、私は問題を見つけました。そしてそれはコルドバとは関係ありません。

この問題に遭遇した他の人々のために:スタックトレースを忘れてください-それは役に立たないです。私の場合、this.connectionState$プロミスからObservableを作成しようとしました。しかし、私はそれを間違っていました。

これは間違っていたものです:

import { Observable } from 'rxjs/Observable';
//...
const myObservable$ = Observable.create(myPromise);

これはどのように行われるべきかです:

import { fromPromise } from 'rxjs/observable/fromPromise';
// ...
const myObservable$ = fromPromise(myPromise);
8
tmuecksch

Observable.of(someval as any)new Observable(someval as any)に置き換えたとき、アップグレード中に、angularアプリケーションの1つでまったく同じエラーメッセージが表示されました。

エラー:キャッチされていません(約束されています):TypeError:this._subscribeは関数ではありません

私もそれをObservable.create(someval as any)にしようとしましたが、同じエラーが発生しました。

解決

それをof(someval as any)で置き換えると、問題が解決しました。

import { of } from 'rxjs';

// use it just like this
of(retval as any);

詳細なエラーメッセージ

エラーエラー:キャッチされていません(約束されています):TypeError:this._subscribeは関数ではありませんTypeError:this._subscribeはObservable.Push ../ node_modules/rxjs/_esm5/internal/Observable.js.Observable._trySubscribeの関数ではありませんObservable.js:42)at Observable.Push ../ node_modules/rxjs/_esm5/internal/Observable.js.Observable.subscribe(Observable.js:28)at MapOperator.Push ../ node_modules/rxjs/_esm5/internal/operator/map.js.MapOperator.call(map.js:18)at Observable.Push ../ node_modules/rxjs/_esm5/internal/Observable.js.Observable.subscribe(Observable.js:23)at MapOperator.Push。 ./node_modules/rxjs/_esm5/internal/operators/map.js.MapOperator.call

5
Aniruddha Das