Ionic 3 - 网络信息插件 - Object(...) 不是函数(...)
Ionic 3 - network-information plugin - Object(...) is not a function(…)
我需要在 ionic 3 angular 4 项目中实现网络信息插件。我使用
安装了一个网络插件
$ ionic cordova plugin add cordova-plugin-network-information
$ npm install --save @ionic-native/network@5.0.0
安装后,我在app.component.ts中使用了这个插件,但是我得到一个错误
ERROR Error: Uncaught (in promise): TypeError: Object(...) is not a function(…) on either device or emulator.
我正在分享我在此应用中使用的本机核心和插件版本。
"@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 (cordova-lib@8.1.1)
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
有人遇到过这个问题吗?请帮助我,因为没有网络插件我无法前进。感谢您的宝贵时间。
问题是您正在使用 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/network@4.20.0
并像这样在导入中删除 ngx:
import { Network } from '@ionic-native/network';
自从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
用于低功耗蓝牙。
我需要在 ionic 3 angular 4 项目中实现网络信息插件。我使用
安装了一个网络插件$ ionic cordova plugin add cordova-plugin-network-information
$ npm install --save @ionic-native/network@5.0.0
安装后,我在app.component.ts中使用了这个插件,但是我得到一个错误
ERROR Error: Uncaught (in promise): TypeError: Object(...) is not a function(…) on either device or emulator.
我正在分享我在此应用中使用的本机核心和插件版本。
"@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 (cordova-lib@8.1.1)
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
有人遇到过这个问题吗?请帮助我,因为没有网络插件我无法前进。感谢您的宝贵时间。
问题是您正在使用 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/network@4.20.0
并像这样在导入中删除 ngx:
import { Network } from '@ionic-native/network';
自从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
用于低功耗蓝牙。