web-dev-qa-db-ja.com

Ionic 4ネイティブプラグインの地理位置情報により、「モジュールが見つかりません:エラー: 'rxjs / Observable'を解決できません」と表示される

ionic=ネイティブプラグインgeolocation in ionic 4しかし、私はこのエラーを受け取りました:

コンパイルに失敗しました。

./node_modules/@ionic-native/geolocation/index.js Module not found:Error:Ca n't resolve 'rxjs/Observable' in 'C:\ Projects\ionic\prayers\node_modules\@ ionic-native\geolocation'

これは私の依存関係です:

"dependencies": {
    "@angular/common": "6.0.9",
    "@angular/core": "6.0.9",
    "@angular/forms": "6.0.9",
    "@angular/http": "6.0.9",
    "@angular/platform-browser": "6.0.9",
    "@angular/platform-browser-dynamic": "6.0.9",
    "@angular/router": "6.0.9",
    "@ionic-native/core": "5.0.0-beta.14",
    "@ionic-native/geolocation": "^4.11.0",
    "@ionic-native/splash-screen": "5.0.0-beta.14",
    "@ionic-native/status-bar": "5.0.0-beta.14",
    "@ionic/angular": "4.0.0-beta.0",
    "@ionic/ng-toolkit": "1.0.0",
    "@ionic/schematics-angular": "1.0.1",
    "cordova-plugin-geolocation": "^4.0.1",
    "core-js": "^2.5.3",
    "rxjs": "6.2.2",
    "zone.js": "^0.8.26"
  },

これは私が使用したコードです:-

app.module.ts

import { Geolocation } from '@ionic-native/geolocation';
...
NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
  providers: [
    StatusBar,
    SplashScreen, Geolocation,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})

home.ts

import { Geolocation } from '@ionic-native/geolocation';
...
constructor(private geolocation: Geolocation) {}
6
rami bin tahin

インポート文が変更されているrxjs 6.2.2がインストールされています。

安定したionic-nativeは引き続き rxjs 5.x を使用しています。

移行ガイド こちら を確認できます。

rxjs-compat を使用できます

npm i rxjs-compat --save

または、5.xバージョンに戻ります。

別のオプションは、@ionic-native/geolocationバージョンを5.0.0-beta14に更新することです

package.json によると、rxjs 6.xを使用する必要があるため、他のイオンネイティブプラグインと同様

npm i --save @ionic-native/[email protected]
7
Suraj Rao

同じ問題に直面していて、Geolocation5.0.0-beta.14にアップグレードするときに、インポートパスも次のように更新する必要がありました。

import { Geolocation } from "@ionic-native/geolocation/ngx";

OBS:UniqueDeviceIDのような他のインポートの場合、/ngxサフィックスもインポートパスに追加する必要がありました。
Angularのバージョン6のため、このサフィックスが必要だと思います。

2
Philip D.