web-dev-qa-db-fra.com

ionic 2 error cordova non disponible

J'essaie d'utiliser le plugin cordova GooglePlus dans un nouveau projet ionic 2 (dernière version d'ionic2) mais je rencontre toujours des erreurs concernant cordova . Le plugin est correctement installé et s'affiche dans le dossier du plugin.

Une approche que j'ai essayée est la suivante:

import { GooglePlus } from "ionic-native";

et alors

GooglePlus.login().then(...)

La méthode de connexion s’exécute mais génère toujours une erreur en indiquant "cordova_not_available"

Je souhaite d'abord tester l'application avec ionic serve sur mon système Windows avant de la déployer sur mon téléphone Android. Comment puis-je rendre Cordova disponible sur le serveur localhost? La recherche montre que cordova.js est généré et toujours inclus dans le package de déploiement du périphérique.

Une autre approche que j'ai essayée utilise

window.plugins.googleplus.login(...)

Mais cette approche ne passe pas par le compilateur TypeScript qui ne sait rien de la propriété d'un plugin sur l'objet windows.

Comment puis-je réparer cela?

31
hholtij

Si vous voulez que le plugin fonctionne pour le navigateur, vous devez ajouter platform browser et l'exécuter:

ionic cordova platform add browser

et lancez-le:

ionic cordova run browser

au lieu de ionic serve.

57
Ajay Gupta

Cette erreur se produit généralement lorsque vous exécutez l'application en chrome avec ionic serve, ce qui est normal car dans le navigateur, les composants natifs cordova ne sont pas présents, mais se produisent également sur les émulateurs et les périphériques lorsqu'un plug-in natif ionique que vous utilisez a été ajouté, même si vous avez ajouté le plugin ionique pour cela. 

Par exemple, si vous utilisez en utilisant Toast natif

alors vous devez ajouter les dépendances ioniques appropriées: 

ionic plugin add cordova-plugin-x-toast --save

mais vous devez également ajouter des dépendances cordova: 

cordova plugin add cordova-plugin-x-toast --save

Si vous oubliez d'ajouter le dernier plugin cordova, vous obtiendrez une erreur du type: 

Runtime Error Uncaught(in promise): cordova_not_available

Ce qui peut être difficile à trouver la cause.

Une fois que vous avez ajouté les dépendances ionique et cordova, vous devriez pouvoir l’utiliser.

Assurez-vous de l'importer: 

import { Toast } from 'ionic-native';

injecter la plateforme dans le constructeur: 

constructor(public navCtrl: NavController, private platform: Platform) {...

puis utilisez l'élément natif: 

this.platform.ready().then(() =>
      Toast.show("Successfull", '5000', 'center')
        .subscribe(
        toast => {
          console.log(toast);
        }
      ));
15
groo

Utiliser ionic serve désactive tous les plugins Cordova, car il ne fonctionne pas sur un périphérique.

Utilisez plutôt ionic cordova run Android Cela démarrera un émulateur Android qui devrait permettre à tous les plugins Cordova de fonctionner.

J'ai également rencontré la deuxième approche, mais la syntaxe doit alors être windows['plugins'].googleplus.login(...)

7
DeepFreez

Parfois, utiliser ionica cordova run browser n’est pas la meilleure option, car la compilation des modifications prend beaucoup de temps. 

Dans mon cas, la cause du problème était le plugin FCM. Il ne peut pas fonctionner sur le navigateur, si j'utilise un service ionique. Comme mon code était dans app.component.ts, il était facile pour moi de résoudre le problème. J'ai simplement utilisé la ligne suivante:

  if (platform.is('cordova')) 
     {  this.fcmx.onTokenRefresh().subscribe(token => { 
     this.pushNoti.storeNewToken(token); }); }

En utilisant platform.is ('cordova'), vous pouvez empêcher le code causant des problèmes de s'exécuter sur le navigateur. 

1
Roddy P. Carbonell

Exécuter simplement après avoir connecté un appareil Android

ionic cordova run Android

assurez-vous de corriger la clé google map 

0
Tlzdeveloper786