Cuando ejecuto mi aplicación Ionic con el comando ionic serve -l , aparece el siguiente mensaje de error:
Error de tiempo de ejecución
No capturado (en promesa): cordova_not_disponible
Pila
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)otros detalles
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.36Instalo el complemento HotSpot , con el siguiente comando:
ionic plugin add cordova-plugin-hotspot --save cordova plugin add cordova-plugin-hotspot --saveUso 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); }); }) } }Además, vi preguntas similares pero no resolvieron el problema.
Está accediendo a complementos nativos mientras prueba en el navegador. Para que los complementos funcionen, debe usar un dispositivo real para probar.
Para que su código se pueda probar en el navegador (o en realidad no se rompa cuando se prueba en el navegador), debe tener una declaración if para verificar si Cordova está disponible:
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'; }EDITAR:
Como Ricky Levi menciona correctamente a continuación, Ionic es compatible con la plataforma del browser . Con esta plataforma, los complementos más comunes pueden funcionar. Tenga en cuenta que algunos complementos no lo harían, por ejemplo, el complemento del escáner de código de barras. Como le indicará una alerta, solicitando el valor que debe scanned . Lo que perderá todo el caso de uso de un escáner de código de barras.
Tal vez algo haya cambiado desde entonces, pero Ionic ahora es compatible con el "navegador" como plataforma (en lugar de simplemente navegar), lo que hace que los complementos de Cordova estén disponibles en el navegador.
Para usarlo agregas la plataforma ionic cordova platform add browser
Y luego ejecuta ionic cordova run browser vs ionic serve ( ionic run browser - al igual que ionic cordova run android o ionic cordova run ios )
Solo se puede acceder a Cordova cuando ejecuta su aplicación en un dispositivo real. Cuando prueba su aplicación en el navegador, no puede acceder a esos complementos nativos.
Puede verificar si está en un dispositivo real o en un navegador como ese:
if (this.platform.is('cordova')) { // You are on a device, cordova plugins are accessible } else { // Cordova not accessible, add mock data if necessary }Esto solo lo ayudará a probar las partes de su aplicación que no dependen de los complementos de Cordova. Para probar realmente su aplicación, debe ejecutarla en un dispositivo o en el emulador.