47 votes

Non pris (promis): cordova_not_available in Ionic 2

Quand je lance ionique app avec ionic serve -l, obtiens cette erreur:

Erreur D'Exécution

Non interceptée (promettre): cordova_not_available

Pile

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)

d'autres détails

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

J'ai Installer HotSpot plugin, avec la commande suivante :

ionic plugin add cordova-plugin-hotspot --save

cordova plugin add cordova-plugin-hotspot --save

Utilisation de l' application.composante.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);

 });
})
   }
  }

Aussi, je vois d'autres questions , mais ne permettent pas de résoudre mon problème.

77voto

JoeriShoeby Points 1182

Vous avez accès natif plugins lors de tests dans le navigateur. Afin de rendre les plugins de travail, vous devez utiliser un vrai appareil de test.

Afin de rendre votre code testable dans le navigateur (ou en fait, ne pas briser lors de l'essai dans le navigateur), vous devriez avoir une si-déclaration de vérifier 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';
  }

EDIT:

Comme Ricky Levi correctement mentionne ci-dessous, prend en charge Ionique de l' browser plate-forme. À l'aide de cette plate-forme, la plupart des communes, les plugins sont en mesure de travailler. Notez que certains plugins ne serait pas, par exemple, le code-Barres scanner de plugin. Comme il vous invite à une alerte, en demandant la valeur qui doit être scanned. Qui va perdre l'ensemble de cas d'utilisation d'un Scanner de code-Barres.

68voto

Ricky Points 336

Quelque chose a peut-être changé depuis, mais Ionic prend désormais en charge le "navigateur" en tant que plate-forme (par rapport à la simple navigation), ce qui rend les plugins Cordova disponibles dans le navigateur.

Pour l'utiliser, vous ajoutez la plateforme ionic cordova platform add browser

Et puis vous lancez ionic cordova run browser vs ionic serve ( ionic run browser - comme ionic cordova run android ou ionic cordova run ios )

12voto

Andreas Gassmann Points 2584

Cordova n'est accessible que lorsque vous exécutez votre application sur un appareil réel. Lorsque vous testez votre application dans le navigateur, elle ne peut pas accéder à ces plug-ins natifs.

Vous pouvez vérifier si vous êtes sur un vrai périphérique ou sur un navigateur comme celui-ci:

 if (this.platform.is('cordova')) {
  // You are on a device, cordova plugins are accessible
} else {
  // Cordova not accessible, add mock data if necessary
}
 

Cela vous aidera uniquement à tester les parties de votre application qui ne dépendent pas des plugins Cordova. Pour vraiment tester votre application, vous devez l'exécuter sur un périphérique ou dans l'émulateur.

3voto

Siddharth Points 31

Pour exécuter l'application dans le navigateur

1.Vérifiez la plate-forme

 # import {Platform} from 'ionic-angular';
 # constructor(public platform:Platform) {
     if (this.platform.is('core')) {
      this.myPlatform = "Browser";
      console.log('I am on a web browser')
    } else {
      this.mobileDevice = "True"
    }
   }
 

Utilisez ces vérifications dans vos méthodes où vous implémentez les dépendances Cordova.

2voto

Chris Points 2692

Téléchargez l'application Ionic View, puis exécutez la commande upload ionic.

Vous pourrez alors prévisualiser l'application sur votre téléphone et les fonctionnalités natives fonctionneront.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X