RXJS:TypeError:this._subscribe不是函数

tmu*_*sch 9 rxjs5 ionic3 angular

我正在将离子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);
        });
}
Run Code Online (Sandbox Code Playgroud)

附加信息

tmu*_*sch 8

好吧,我发现了问题.它与Cordova无关.

对于遇到此问题的其他人:忘记堆栈跟踪 - 它没用.在我的情况下,this.connectionState$我试图从一个承诺创建一个Observable.但我做错了.

这是错的:

import { Observable } from 'rxjs/Observable';
//...
const myObservable$ = Observable.create(myPromise);
Run Code Online (Sandbox Code Playgroud)

这是应该如何做到的:

import { fromPromise } from 'rxjs/observable/fromPromise';
// ...
const myObservable$ = fromPromise(myPromise);
Run Code Online (Sandbox Code Playgroud)


Ani*_*Das 5

我在我的角度应用之一,恰好有相同的错误消息,在做升级时,我换成Observable.of(someval as any)new Observable(someval as any)

错误:未捕获(承诺):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);
Run Code Online (Sandbox Code Playgroud)

详细的错误信息

错误错误:未捕获(承诺):TypeError:this._subscribe不是函数TypeError:this._subscribe不是Observable.push ../ node_modules / rxjs / _esm5 / internal / Observable.js.Observable._trySubscribe的函数在Observable.push ../ node_modules / rxjs / _esm5 / internal /上的Observable.push ../ node_modules / rxjs / _esm5 / internal / Observable.js.Observable.subscribe(Observable.js:28)处的Observable.js:42)。 Observable.push上的operator / map.js.MapOperator.call(map.js:18)../ MapOperator.push上的node_modules / rxjs / _esm5 / internal / Observable.js.Observable.subscribe(Observable.js:23)。 ./node_modules/rxjs/_esm5/internal/operators/map.js.MapOperator.call