![](/img/trans.png)
[英]device.platform return 'device is not defined' on cordova project
[英]cordova not defined even on device
我正在嘗試使用自定義插件,但即使沒有這個自定義插件,當我嘗試使用 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);
}
}
離子信息:
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
確保在 index.html 中添加了cordova.js
經過大量研究,我找到了解決方案。
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,您可以在您的應用程序中使用自定義插件代碼。
希望這會幫助其他面臨同樣問題的人。
錯誤意味着您的 Cordova 路徑無效,
我的建議是卸載所有 Cordova 版本並重新安裝並僅使用那個 1,因為我遇到了類似的問題。
就我而言,問題是因為我從以下位置搬遷而來的:
ionic cordova build android
到
ionic build
cordova build android
一旦我回到 ionic cordova build android
,cordova var 又被定義了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.