web-dev-qa-db-fra.com

console.log ne fonctionne pas dans une application iOS PhoneGap 3.0

Je mets à jour une application de PhoneGap 1.9 vers PhoneGap 3.0. La fonction console.log () ne fonctionne plus. Auparavant, la sortie était écrite dans la console XCode. Quelle est la meilleure façon de restaurer la fonction de journalisation?

J'ai lu: PhoneGap 2.0 n'affiche pas console.log dans XCode mais dans PhoneGap 3.0 console.log ne fonctionne pas même après l'événement deviceReady.

Je suis également intéressé de voir les erreurs javascript directement dans xcode.

21
poiuytrez

Vous avez besoin du plugin de console de débogage ajouté à votre projet:

phonegap local plugin add https://git-wip-us.Apache.org/repos/asf/cordova-plugin-console.git

Dans les versions ultérieures de phonegap/cordova, pour ajouter le plugin de console de débogage dans votre projet:

cordova plugin add org.Apache.cordova.console

31
Sam Thompson

Il s'est avéré, au moins dans mon cas, que la fonction deviceready pour l'enregistreur n'était pas appelée. La dernière ligne dans logger.js.

document.addEventListener("deviceready", logger.__onDeviceReady, false);

La solution (ou vraiment une solution de contournement) consiste à appeler le logger.__onDeviceReady fonction de votre fonction d'écoute deviceready:

function onDeviceReady() {
    if (window.cordova.logger) {
        window.cordova.logger.__onDeviceReady();
    }
}

document.addEventListener('deviceready', onDeviceReady, false);
30
Jonathan Dixon

J'ai trouvé JSconsole.com extrêmement utile pour capturer à distance les journaux de console à partir d'appareils mobiles.

Voici comment vous l'avez configuré:

  1. Dans vos applications index.html, incluez (changez l'ID):

      <script src="http://jsconsole.com/remote.js?<MAKE UP SOME UNIQUE ID>"></script>
    
  2. Sur votre ordinateur, accédez à jsconsole.com et tapez :listen <YOUR UNIQUE ID>

Ouvrez votre application sur votre appareil mobile, vous verrez les journaux de la console sur votre ordinateur.

9
Fostah

Ajoutez le plugin de console comme dans la réponse de Sam et assurez-vous d'inclure cordova.js sur chaque page sinon aucun plugin ne fonctionne.

Lors de l'utilisation de plugins phonegap, j'ajoutais phonegap.js dans la balise de script, puis j'ai remarqué que les plugins (tous) ne fonctionnaient que sur la page index.html. Lorsque j'ai changé phonegap.js en cordova.js, les plugins (notification, appareil photo, etc.) ont commencé à travailler sur le reste des pages. Si cela aide quelqu'un.

6
Muhammad Qasim

Problème

Le message d'erreur suivant ou similaire se produit lors de l'ajout du plug-in de console à la plate-forme ios (ou après la réinstallation) via l'interface de ligne de commande:

"La classe CDVPlugin CDVLogger (pluginName: Console) n'existe pas."

Solution

Ouvrez votre projet Xcode et allez dans l'onglet "Phases de construction". Ouvrez maintenant le menu déroulant nommé "Compiler les sources". Cliquez sur le signe "+" à la fin de la liste et ajoutez "CDVLogger.m" ou toute autre source manquante.

3
Omnicon

Outre l'ajout du plugin Console, j'ai une autre hypothèse pourquoi cela pourrait ne pas fonctionner:

console.log dans Phonegap est appelé de manière asynchrone, donc si un appel futur échoue, toute la fonction échoue et tous les appels de journal sont avalés.

  receivedEvent = function( id ) {
    alert( 'This message is displayed because alert is called synchronously ')
    console.log( 'This will not be displayed in Phonegap only in browser' )
    callingAFunctionWhichDoesNotExist()
    console.log( 'This will neither be displayed in Phonegap nor in browser' )
  }
3
Gerold Meisinger

Si vous avez installé le plug-in de la console Cordova, lorsque vous exécutez votre application:

phonegap run iOS

vous trouverez les journaux sur:

[your project dir]/platforms/ios/cordova/console.log

pour IOS. Tous les journaux de la console s'affichent comme prévu.

3
user3051092

J'ai trouvé GapDebug vraiment utile. Contrairement à toute autre chose [cough cough weinre], il vous permet de consigner le journal de votre application locale

0
Gobi Dasu