Ionic 3 - 网络信息插件 - 对象(...)不是函数(...)

问题描述 投票:2回答:2

我需要在离子3角4项目中实现网络信息插件。我已经安装了一个网络插件

$ ionic cordova plugin add cordova-plugin-network-information  
$ npm install --save @ionic-native/[email protected]

安装后,我在app.component.ts中使用过这个插件,但是我收到了一个错误

错误:未捕获(在承诺中):TypeError:对象(...)不是设备或仿真器上的函数(...)。

我正在共享我在这个应用程序中使用的本机核心和插件版本。

"@ionic-native/core": "5.0.0"
"@ionic-native/network": "5.0.0"
"cordova-plugin-network-information": "2.0.1"

请注意:我尝试升级"@ionic-native/core" to "5.2.0""@ionic-native/network" to "5.2.0"。但问题没有解决。

在这里,我不能降低插件npm版本或"@ionic-native/core" to "4.2.0",因为我在这个应用程序中使用了很多插件,它们工作正常@版本“5.0.0”。

下面是我的app.component.ts

import { Network } from '@ionic-native/network/ngx';
...
constructor(private network: Network) {
    this.platform.ready().then(() => {
        // watch network for a disconnection
        let disconnectSubscription = this.network.onDisconnect().subscribe(() => {
            console.log('network disconnected!');
        });
    })
}

下面是我的package.json

"dependencies": {
    "@angular/animations": "5.2.11",
    "@angular/common": "5.2.11",
    "@angular/compiler": "5.2.11",
    "@angular/compiler-cli": "5.2.11",
    "@angular/core": "5.2.11",
    ...
    "@ionic-native/core": "^5.0.0",
    "@ionic-native/network": "^5.0.0",
    ...
    "cordova-android": "7.1.4",
    "cordova-plugin-device": "2.0.2",
    "cordova-plugin-network-information": "2.0.1",
    "ionic-angular": "^3.9.2",
  }

以下是我的开发系统信息

Ionic:
    ionic (Ionic CLI)  : 4.3.1 (/usr/local/lib/node_modules/ionic)
    Ionic Framework    : ionic-angular 3.9.2
    @ionic/app-scripts : 3.2.1

Cordova:
   cordova (Cordova CLI) : 8.1.2 ([email protected])
   Cordova Platforms     : android 7.1.4
   Cordova Plugins       : no whitelisted plugins

System:
   Android SDK Tools : 26.1.1 (/Users/###/Library/Android/sdk)
   ios-deploy        : 1.9.4
   NodeJS            : v8.11.3 (/usr/local/bin/node)
   npm               : 6.4.1
   OS                : macOS High Sierra
   Xcode             : Xcode 10.1 Build version 10B61

有没有人遇到过这个问题?请帮助我,因为如果没有网络插件,我无法继续前进。谢谢你的时间。

angular ionic-framework ionic3 ionic-native
2个回答
2
投票

问题是你正在使用适用于Ionic版本4的/ngx导入。如果你去阅读changelog,你会看到版本5及以上的Requires Angular 7.1 and TypeScript 3.1

尝试将插件降级到4.20.0,如下所示:

npm uninstall @ionic-native/network

然后npm install @ionic-native/[email protected]

并在导入中删除ngx,如下所示:import { Network } from '@ionic-native/network';


1
投票

自Ionic 4发布以来,为Ionic 3安装Ionic Native需要添加@4以获得最新的兼容版本。在这种情况下,以及所有其他涉及Ionic 3的人,你都应该这样做

npm install @ionic-native/network@4

对于网络,

npm install --save @ionic-native/barcode-scanner@4 

对于条码扫描仪,

npm install --save @ionic-native/network@4, 
npm install --save @ionic-native/bluetooth-le@4 

对于BluetoothLE。

© www.soinside.com 2019 - 2024. All rights reserved.