Ionic 7 - Could not resolve dependency:

I am migration from Ionic 6 / Angular 12 to Ionic 7 / Angular 14, following migration guide from both frameworks.

I having errors on running npm install, about rxjs version.
Example:

npm ERR!   node_modules/@angular/cdk
npm ERR!     @angular/cdk@"^14.2.7" from the root project
npm ERR!   10 more (@angular/common, @angular/core, @angular/forms, ...)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer rxjs@"^5.5.0 || ^6.5.0" from @ionic-native/app-availability@5.36.0
npm ERR! node_modules/@ionic-native/app-availability
npm ERR!   @ionic-native/app-availability@"^5.36.0" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: rxjs@6.6.7
npm ERR! node_modules/rxjs
npm ERR!   peer rxjs@"^5.5.0 || ^6.5.0" from @ionic-native/app-availability@5.36.0
npm ERR!   node_modules/@ionic-native/app-availability
npm ERR!     @ionic-native/app-availability@"^5.36.0" from the root project
npm ERR!.

Can anyone help me with this?
My package.json:

"dependencies": {
    "@angular/cdk": "^14.2.7",
    "@angular/common": "^14.3.0",
    "@angular/core": "^14.3.0",
    "@angular/forms": "^14.3.0",
    "@angular/platform-browser": "^14.3.0",
    "@angular/platform-browser-dynamic": "^14.3.0",
    "@angular/router": "^14.3.0",
    "@awesome-cordova-plugins/core": "^5.39.1",
    "@awesome-cordova-plugins/firebase-analytics": "^5.39.1",
    "@awesome-cordova-plugins/splash-screen": "^5.44.0",
    "@awesome-cordova-plugins/sqlite": "^5.42.0",
    "@capacitor/android": "^4.4.0",
    "@capacitor/cli": "^4.4.0",
    "@capacitor/core": "^4.4.0",
    "@ionic-native/app-availability": "^5.36.0",
    "@ionic-native/app-launcher": "^5.36.0",
    "@ionic-native/app-minimize": "^5.36.0",
    "@ionic-native/app-version": "^5.36.0",
    "@ionic-native/background-mode": "^5.36.0",
    "@ionic-native/barcode-scanner": "^5.36.0",
    "@ionic-native/branch-io": "^5.36.0",
    "@ionic-native/camera": "^5.36.0",
    "@ionic-native/clipboard": "^5.36.0",
    "@ionic-native/core": "^5.36.0",
    "@ionic-native/device": "^5.36.0",
    "@ionic-native/diagnostic": "^5.36.0",
    "@ionic-native/file": "^5.36.0",
    "@ionic-native/fingerprint-aio": "^5.36.0",
    "@ionic-native/geolocation": "^5.36.0",
    "@ionic-native/google-maps": "^5.5.0",
    "@ionic-native/header-color": "^5.36.0",
    "@ionic-native/in-app-browser": "^5.36.0",
    "@ionic-native/keyboard": "^5.36.0",
    "@ionic-native/launch-navigator": "^5.36.0",
    "@ionic-native/location-accuracy": "^5.36.0",
    "@ionic-native/market": "^5.36.0",
    "@ionic-native/network": "^5.36.0",
    "@ionic-native/open-native-settings": "^5.36.0",
    "@ionic-native/social-sharing": "^5.36.0",
    "@ionic-native/speech-recognition": "^5.36.0",
    "@ionic-native/status-bar": "^5.36.0",
    "@ionic-native/unique-device-id": "^5.36.0",
    "@ionic-native/vibration": "^5.36.0",
    "@ionic/angular": "^7.0.1",
    "@ionic/cordova-builders": "^6.1.0",
    "@ionic/core": "^7.0.1",
    "@sweetalert2/ngx-sweetalert2": "^5.1.0",
    "@teamhive/lottie-player": "^1.0.0",
    "@types/hammerjs": "^2.0.41",
    "angular-cropperjs": "^1.0.2",
    "angularx-qrcode": "^12.0.3",
    "br-mask": "0.0.4",
    "branch-cordova-sdk": "^5.0.2",
    "bufferutil": "^4.0.6",
    "canvas-confetti": "^1.4.0",
    "cordova-browser": "6.0.0",
    "cordova-clipboard": "^1.3.0",
    "cordova-open-native-settings": "^1.5.5",
    "cordova-plugin-actionsheet": "^2.3.3",
    "cordova-plugin-app-launcher": "^0.4.0",
    "cordova-plugin-app-version": "^0.1.12",
    "cordova-plugin-appavailability": "^0.4.2",
    "cordova-plugin-apprate": "^1.7.2",
    "cordova-plugin-background-mode": "^0.7.3",
    "cordova-plugin-camera": "^6.0.0",
    "cordova-plugin-device": "^2.0.3",
    "cordova-plugin-dialogs": "^2.0.2",
    "cordova-plugin-fingerprint-aio": "^5.0.1",
    "cordova-plugin-geolocation": "^4.1.0",
    "cordova-plugin-headercolor": "^1.0.0",
    "cordova-plugin-inappbrowser": "^5.0.0",
    "cordova-plugin-ionic-keyboard": "^2.2.0",
    "cordova-plugin-ionic-webview": "^5.0.0",
    "cordova-plugin-market": "^1.2.0",
    "cordova-plugin-nativestorage": "^2.3.2",
    "cordova-plugin-network-information": "^3.0.0",
    "cordova-plugin-request-location-accuracy": "^2.3.0",
    "cordova-plugin-statusbar": "^3.0.0",
    "cordova-plugin-uniquedeviceid": "^1.3.2",
    "cordova-plugin-vibration": "^3.1.1",
    "cordova-plugin-whitelist": "^1.3.5",
    "cordova-plugin-wifiwizard2": "3.1.1",
    "cordova-res": "^0.15.4",
    "cordova-support-android-plugin": "^1.0.2",
    "cordova.plugins.diagnostic": "^6.1.1",
    "core-js": "^3.21.0",
    "cropperjs": "^1.5.12",
    "es6-promise-plugin": "^4.1.0",
    "hammerjs": "^2.0.8",
    "moment": "^2.29.1",
    "ng-circle-progress": "^1.6.0",
    "ngx-barcode": "^0.3.0",
    "ngx-gauge": "^4.0.0",
    "ngx-infinite-scroll": "^13.0.2",
    "ngx-pinch-zoom": "^2.1.4",
    "phonegap-plugin-barcodescanner": "^8.1.0",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^7.5.0",
    "rxjs-compat": "^6.6.7",
    "rxjs-pausable": "^1.0.0",
    "sweetalert2": "^11.4.0",
    "swiper": "^8.4.2",
    "ts-md5": "^1.2.11",
    "tslib": "^2.0.0",
    "typeorm": "^0.3.6",
    "uk.co.workingedge.phonegap.plugin.launchnavigator": "^5.0.6",
    "utf-8-validate": "^5.0.8",
    "wifiwizard2": "^3.1.1",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/architect": "^0.1402.11",
    "@angular-devkit/build-angular": "^14.2.11",
    "@angular-devkit/core": "^14.2.11",
    "@angular-devkit/schematics": "^14.2.11",
    "@angular/cli": "^14.2.11",
    "@angular/compiler": "^14.3.0",
    "@angular/compiler-cli": "^14.3.0",
    "@angular/language-service": "^14.3.0",
    "@ionic/angular-toolkit": "^9.0.0",
    "@types/jasmine": "~3.6.0",
    "@types/jasminewd2": "^2.0.10",
    "@types/node": "^12.20.52",
    "codelyzer": "^6.0.0",
    "cordova-android": "^10.1.2",
    "cordova-plugin-androidx": "^3.0.0",
    "cordova-plugin-androidx-adapter": "^1.1.3",
    "cordova-plugin-appminimize": "^1.0.1",
    "cordova-plugin-file": "^7.0.0",
    "cordova-plugin-firebase-analytics": "^5.0.0",
    "cordova-plugin-speechrecognition": "git+https://github.com/sysmo-dsv/cordova-plugin-speechrecognition.git",
    "cordova-plugin-splashscreen": "^6.0.2",
    "cordova-plugin-x-socialsharing": "^6.0.4",
    "cordova-sqlite-storage": "^6.0.0",
    "jasmine-core": "~3.6.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~6.3.15",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "onesignal-cordova-plugin": "^3.2.0",
    "phonegap-plugin-barcodescanner": "git+https://github.com/sysmo-dsv/phonegap-plugin-barcodescanner.git",
    "protractor": "~7.0.0",
    "sass": "^1.49.7",
    "ts-node": "^8.10.2",
    "tslint": "~6.1.0",
    "tslint-etc": "^1.13.10",
    "typescript": "^4.6.4"
  },

Ionic info:

Ionic CLI                     : 7.0.1 (C:\Users\s275\AppData\Roaming\npm\node_modules\@ionic\cli)
   Ionic Framework               : @ionic/angular 7.0.1
   @angular-devkit/build-angular : 14.2.11
   @angular-devkit/schematics    : 14.2.11
   @angular/cli                  : 14.2.11
   @ionic/angular-toolkit        : 9.0.0

Cordova:

   Cordova CLI       : 10.0.0 (cordova-lib@10.1.0)
   Cordova Platforms : none
   Cordova Plugins   : no whitelisted plugins (0 plugins total)

Utility:

   cordova-res : 0.15.4
   native-run  : 1.7.1

System:

   NodeJS : v16.20.0 (C:\Program Files\nodejs\node.exe)
   npm    : 8.19.4
   OS     : Windows 10

@ionic-native was deprecated long ago and replaced with @awesome-cordova-plugins.
You should replace all your @ionic-native wrappers with their @awesome-cordova-plugins equivalent.

Your problem is your @ionic-native packages, since are deprecated, they are out of date and don’t work with rxjs version 7, not only that, they require you to use version 5 o 6, but @angular/cdk requires to use version 7, so npm is complaining about the version mismatch as it can’t install both.

1 Like

Thanks Julio!

Some plugins doesn’t exists in @awesome-cordova-plugins, so I’m still using them with @ionic-native, but with no peer dependency in my package-lock.