Ionic-native: bug(rxjs): incompatible types

Created on 21 Oct 2017  ยท  12Comments  ยท  Source: ionic-team/ionic-native

I'm submitting a ... (check one with "x")
[x] bug report
[ ] feature request

Current behavior:
Running ionic serve gives the following error: (you can see the error originates from ionic-native's rxjs)

image

Expected behavior:

No error

Steps to reproduce:
No Idea

package.json info:

"dependencies": {
    "@agm/core": "^1.0.0-beta.1",
    "@angular/common": "^4.4.6",
    "@angular/compiler": "^4.4.6",
    "@angular/compiler-cli": "^4.4.6",
    "@angular/core": "^4.4.6",
    "@angular/forms": "^4.4.6",
    "@angular/http": "^4.4.6",
    "@angular/platform-browser": "^4.4.6",
    "@angular/platform-browser-dynamic": "^4.4.6",
    "@ionic-native/core": "^4.3.2",
    "@ionic-native/date-picker": "^4.3.2",
    "@ionic-native/facebook": "^4.3.2",
    "@ionic-native/geolocation": "^4.3.2",
    "@ionic-native/globalization": "^4.3.2",
    "@ionic-native/google-analytics": "^4.3.2",
    "@ionic-native/google-maps": "^4.3.2",
    "@ionic-native/native-geocoder": "^4.3.2",
    "@ionic-native/splash-screen": "^4.3.2",
    "@ionic-native/status-bar": "^4.3.2",
    "@ionic/cloud-angular": "^0.12.0",
    "@ionic/storage": "2.0.1",
    "@ngui/auto-complete": "^0.16.0",
    "@ngx-translate/core": "^8.0.0",
    "@ngx-translate/http-loader": "^2.0.0",
    "angular2-google-maps": "^0.17.0",
    "angularfire2": "4.0.0-rc0",
    "cordova-android": "^6.3.0",
    "cordova-browser": "^5.0.1",
    "cordova-ios": "^4.5.2",
    "cordova-plugin-add-swift-support": "^1.7.0",
    "cordova-plugin-compat": "^1.2.0",
    "cordova-plugin-console": "^1.1.0",
    "cordova-plugin-datepicker": "^0.9.3",
    "cordova-plugin-device": "^1.1.6",
    "cordova-plugin-facebook4": "^1.9.1",
    "cordova-plugin-geolocation": "^2.4.3",
    "cordova-plugin-globalization": "^1.0.7",
    "cordova-plugin-google-analytics": "~1.8.3",
    "cordova-plugin-googlemaps": "^2.0.11",
    "cordova-plugin-googlemaps-sdk": "git+https://github.com/mapsplugin/cordova-plugin-googlemaps-sdk.git",
    "cordova-plugin-nativegeocoder": "^2.0.4",
    "cordova-plugin-recentscontrol": "^1.1.0",
    "cordova-plugin-splashscreen": "^4.0.3",
    "cordova-plugin-statusbar": "^2.2.3",
    "cordova-plugin-whitelist": "^1.3.2",
    "firebase": "4.3.1",
    "geofire": "^4.1.2",
    "ionic-angular": "^3.7.1",
    "ionic-plugin-deploy": "^0.6.7",
    "ionic-plugin-keyboard": "^2.2.1",
    "ionicons": "3.0.0",
    "markdown": "^0.5.0",
    "md5": "^2.2.1",
    "moment": "^2.19.1",
    "ng2-lazy-trumbowyg": "^2.4.2",
    "rxjs": "^5.5.0",
    "sw-toolbox": "3.6.0",
    "zone.js": "^0.8.18"
},

Most helpful comment

Aha... figured it out. We have a deprecated version of ionic-native installed!

We no longer need the ionic-native module - we just need @ionic-native/core.

Running npm uninstall ionic-native --save builds successfully.

All 12 comments

Find out why!
I used typescript: ~2.5.0 instead of ~2.3.4

I'm leaving this open because this has to be fixed when ionic uses angular 5

Pasting error in text form for better searchability in these issues:

[12:41:23]  typescript: node_modules/ionic-native/node_modules/rxjs/Subject.d.ts, line: 16
            Class 'Subject<T>' incorrectly extends base class 'Observable<T>'. Types of property 'lift' are
            incompatible. Type '<R>(operator: Operator<T, R>) => Observable<T>' is not assignable to type '<R>(operator:
            Operator<T, R>) => Observable<R>'. Type 'Observable<T>' is not assignable to type 'Observable<R>'. Type 'T'
            is not assignable to type 'R'.

      L16:  export declare class Subject<T> extends Observable<T> implements ISubscription {
      L17:      observers: Observer<T>[];

[12:41:23]  typescript: node_modules/ionic-native/node_modules/rxjs/observable/dom/WebSocketSubject.d.ts, line: 23
            Class 'WebSocketSubject<T>' incorrectly extends base class 'AnonymousSubject<T>'. Types of property 'lift'
            are incompatible. Type '<R>(operator: Operator<T, R>) => WebSocketSubject<R>' is not assignable to type
            '<R>(operator: Operator<T, R>) => Observable<T>'. Type 'WebSocketSubject<R>' is not assignable to type
            'Observable<T>'. Types of property 'operator' are incompatible. Type 'Operator<any, R>' is not assignable to
            type 'Operator<any, T>'. Type 'R' is not assignable to type 'T'.

      L23:  export declare class WebSocketSubject<T> extends AnonymousSubject<T> {
      L24:      url: string;

This is a bigger problem now that https://github.com/ionic-team/ionic/releases/tag/v3.9.0 has dropped - 3.9.0 introduces rxjs 5.5.2 and Angular5!

This will (very hopefully) be resolved by https://github.com/ionic-team/ionic-native/pull/2089

@AmitMY can you share the results of an npm ls rxjs from your app directory? I am curious if this problem is caused by having multiple rxjs versions in various packages.

I see that ionic-native is already using rxjs 5.5.2, yet my repo shows the same errors. Here's my npm ls rxjs output:

โœ— npm ls rxjs
[email protected] /Users/emcniece/Code/ionic/aurora-app
โ”œโ”€โ”ฌ [email protected] -> /Users/emcniece/Code/nodejs/aurorajs
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]  deduped
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ””โ”€โ”€ [email protected]

cc @danbucholtz any thoughts on the above? See #2089 for a PR to update deps

Aha... figured it out. We have a deprecated version of ionic-native installed!

We no longer need the ionic-native module - we just need @ionic-native/core.

Running npm uninstall ionic-native --save builds successfully.

@AmitMY your shared package.json doesn't explicitly list ionic-native as an included package, but the paths in your screenshot indicate that this module is present in your system. Try running the uninstall command above.

The issue for me was that I was using @ionic/cloud-angular, which is now deprecated in favour of Ionic Pro. An outdated version of ionic-native is a dependency of @ionic/cloud-angular.

//lift<T>(operator: Operator<T,R>): Observable<T>;

worked for me

Thanks @hellios123 !

@hellios123 Indeed, commething this line helped me. But I cannot grasp the underlying problem that is causing this bug. commenting a line of code should not be a way of fixing things

@hellios123 Thanks!
I agree with @FloryanFilip

Was this page helpful?
0 / 5 - 0 ratings

Related issues

mateo666 picture mateo666  ยท  3Comments

goleary picture goleary  ยท  3Comments

icchio picture icchio  ยท  3Comments

shaliko picture shaliko  ยท  3Comments

JaneDawson picture JaneDawson  ยท  4Comments