Ketika saya menjalankan aplikasi ionic dengan ionic serve -l
, mendapatkan kesalahan ini:
Runtime Error
Uncaught (in promise): cordova_not_available
Stack
Error: Uncaught (in promise): cordova_not_available
at v (http://localhost:8100/build/polyfills.js:3:4864)
at s (http://localhost:8100/build/polyfills.js:3:4289)
at s (http://localhost:8100/build/polyfills.js:3:4112)
at http://localhost:8100/build/polyfills.js:3:4652
at t.invokeTask (http://localhost:8100/build/polyfills.js:3:10284)
at Object.onInvokeTask (http://localhost:8100/build/main.js:38692:37)
at t.invokeTask (http://localhost:8100/build/polyfills.js:3:10220)
at e.runTask (http://localhost:8100/build/polyfills.js:3:7637)
at i (http://localhost:8100/build/polyfills.js:3:3707)
at HTMLDocument.invoke (http://localhost:8100/build/polyfills.js:3:11437)
detail lainnya
Ionic Framework: 2.2.0
Ionic Native: 2.8.1
Ionic App Scripts: 1.1.4
Angular Core: 2.4.8
Angular Compiler CLI: 2.4.8
Node: 6.9.2
OS Platform: Windows 10
Navigator Platform: Win32
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Saya menginstal plugin HotSpot, dengan perintah berikut:
ionic plugin add cordova-plugin-hotspot --save
cordova plugin add cordova-plugin-hotspot --save
Penggunaan app.component.ts
import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar, Splashscreen,Hotspot,Network } from 'ionic-native';
import { TabsPage } from '../pages/tabs/tabs';
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage = TabsPage;
constructor(platform: Platform) {
platform.ready().then(() => {
StatusBar.styleDefault();
Splashscreen.hide();
Hotspot.scanWifi().then((networks: Array<Network>) => {
console.log(networks);
});
})
}
}
Juga, saya melihat pertanyaan lainnya tetapi tidak menyelesaikan masalah saya.
Anda mengakses plugin asli saat menguji di browser. Untuk membuat plugin berfungsi, Anda harus menggunakan perangkat nyata untuk menguji.
Untuk membuat kode Anda dapat diuji di browser (atau sebenarnya tidak rusak saat pengujian di browser), Anda harus memiliki pernyataan jika memeriksa apakah Cordova tersedia:
if (this.platform.is('cordova')) {
// You're on a device, call the native plugins. Example:
//
// var url: string = '';
//
// Camera.getPicture().then((fileUri) => url = fileUri);
} else {
// You're testing in browser, do nothing or mock the plugins' behaviour.
//
// var url: string = 'assets/mock-images/image.jpg';
}
EDIT:
Seperti yang disebutkan Ricky Levi dengan benar di bawah ini, Ionic mendukung platform browser
. Dengan menggunakan platform ini, sebagian besar plugin umum dapat bekerja. Perhatikan bahwa beberapa plugin tidak akan berfungsi, misalnya plugin Barcode-scanner. Karena akan meminta Anda dengan peringatan, meminta nilai yang harus dipindai
. Yang akan menghilangkan seluruh kasus penggunaan Barcode Scanner.
Cordova hanya dapat diakses ketika Anda menjalankan aplikasi Anda di perangkat nyata. Ketika Anda menguji aplikasi Anda di browser, aplikasi tidak dapat mengakses plugin asli tersebut.
Anda dapat memeriksa apakah Anda berada di perangkat nyata atau browser seperti itu:
if (this.platform.is('cordova')) {
// You are on a device, cordova plugins are accessible
} else {
// Cordova not accessible, add mock data if necessary
}
Ini hanya akan membantu Anda menguji bagian-bagian aplikasi Anda yang tidak bergantung pada plugin Cordova. Untuk benar-benar menguji aplikasi Anda, Anda perlu menjalankannya di perangkat atau di emulator.