cordova甚至没有在设备上定义

时间:2018-02-01 03:39:34

标签: android cordova ionic-framework

我正在尝试使用自定义插件,但即使没有这个自定义插件,当我尝试使用cordova.plugins时,它会在浏览器,模拟器和真实设备中抛出此错误。

enter image description here 这是代码home.ts

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

4 个答案:

答案 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 又被定义了。