RXJS: TypeError: this._subscribe is not a function

Well, I found the problem. And it's not related to Cordova.

For other people encountering this problem: Forget the stack trace - it's useless. In my case in a subscriber of this.connectionState$ I tried to create an Observable from a promise. But I did it wrong.

This is what was wrong:

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

This is how it should be done:

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

I was getting exactly same error message in one of my angular application while doing upgrade when I replaced Observable.of(someval as any) with new Observable(someval as any).

Error: Uncaught (in promise): TypeError: this._subscribe is not a function

I also tried to make it Observable.create(someval as any) but the same error.

Solution

Replacing it with of(someval as any) resolved the problem for me.

import { of } from 'rxjs';

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

detailed error message

ERROR Error: Uncaught (in promise): TypeError: this._subscribe is not a function TypeError: this._subscribe is not a function at 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/operators/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