Ionic 4 本机插件地理定位给了我“找不到模块:错误:无法解析 'rxjs/Observable'”
Posted
技术标签:
【中文标题】Ionic 4 本机插件地理定位给了我“找不到模块:错误:无法解析 \'rxjs/Observable\'”【英文标题】:Ionic 4 native plugin geolocation gives me "Module not found: Error: Can't resolve 'rxjs/Observable'"Ionic 4 本机插件地理定位给了我“找不到模块:错误:无法解析 'rxjs/Observable'” 【发布时间】:2019-01-08 15:36:27 【问题描述】:我正在尝试在ionic 4
中使用离子原生插件geolocation
,但出现此错误:
编译失败。
./node_modules/@ionic-native/geolocation/index.js 未找到模块: 错误:无法解析“rxjs/Observable” '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)
【问题讨论】:
【参考方案1】:您安装了rxjs 6.2.2
,在其中更改了导入语句。
稳定的 ionic-native 仍在使用rxjs 5.x。
您可以查看迁移指南here。
您可以使用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/geolocation@5.0.0-beta.14
【讨论】:
我在使用原生地理编码器时遇到问题,所以我猜也是同样的问题.. 我怎么知道原生 api 的新 beta 版本? 你需要检查他们的 repo,看看他们是否升级了 rxjs.. 否则你需要使用旧版本直到那时 npm i --save @ionic-native/geolocation@5.0.0-beta.14 为我工作【参考方案2】:我遇到了同样的问题,在将 Geolocation
升级到 5.0.0-beta.14
时,我还必须将导入路径更新为:import Geolocation from "@ionic-native/geolocation/ngx";
OBS:对于像UniqueDeviceID
这样的其他导入,我还必须在导入路径中添加/ngx
后缀。
我认为由于 Angular 版本 6 需要这个后缀。
【讨论】:
是的,在 Ionic 4 文档中,他们声明 Angular 需要“/ngx”路径,因为 ionic 现在支持其他框架,但是他们给了我们 npm 命令来安装旧版本的地理定位有 "/ngx" ...以上是关于Ionic 4 本机插件地理定位给了我“找不到模块:错误:无法解析 'rxjs/Observable'”的主要内容,如果未能解决你的问题,请参考以下文章
Ionic Cordova Build prod:找不到模块“。” - 打字稿版本>3
如何更改 Ionic 2 iOS 应用程序的位置访问描述?我正在为我的应用程序使用科尔多瓦地理定位插件