我正在尝试使用自定义插件,但即使没有这个自定义插件,当我尝试使用cordova.plugins时,它会在浏览器,模拟器和真实设备中抛出此错误。
import {Component} from '@angular/core';
import {NavController, Platform} from 'ionic-angular';
declare var cordova:any;
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController, public platform: Platform) {
platform.ready().then(() => {this.test();});
}
test() {
console.log('platform is ready..');alert(typeof cordova);
}
}
IONIC INFO:
cli包:(/ usr / local / lib / node_modules)
@ionic/cli-utils : 1.19.1
ionic (Ionic CLI) : 3.19.1
全球套餐:
cordova (Cordova CLI) : 8.0.0
本地包裹:
@ionic/app-scripts : 3.1.8
Cordova Platforms : android 7.0.0 browser 5.0.3
Ionic Framework : ionic-angular 3.9.2
系统:
Node : v8.9.4
npm : 5.6.0
OS : macOS High Sierra
Xcode : Xcode 9.2 Build version 9C40b
环境变量:
ANDROID_HOME : /usr/local/share/android-sdk
其他:
backend : legacy
答案 0 :(得分:1)
确保您的index.html
中添加了cordova.js答案 1 :(得分:0)
错误表示您的Cordova路径无效,
我建议卸载所有Cordova版本并重新安装并仅使用1,因为我遇到了类似的问题。
答案 2 :(得分:0)
经过大量研究,我找到了解决方案。
livereload插件无法提供cordova.js文件,并在开发过程中提供模拟cordova文件。
要解决此问题,请打开node_modules/@ionic/app-scripts/dist/dev-server/serve-config.js
并替换
exports.ANDROID_PLATFORM_PATH = path.join('platforms', 'android', 'assets', 'www');
到
exports.ANDROID_PLATFORM_PATH = path.join('platforms', 'android', 'app', 'src', 'main', 'assets', 'www');
和cordova已加载,您可以在应用中使用自定义插件代码。
希望这会有助于其他人面临同样的问题。
答案 3 :(得分:0)
就我而言,问题是由于我搬家所致:
ionic cordova build android
到
ionic build
cordova build android
一旦我回到 ionic cordova build android
,cordova var 又被定义了。