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.
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
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);
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é:
Dans vos applications index.html, incluez (changez l'ID):
<script src="http://jsconsole.com/remote.js?<MAKE UP SOME UNIQUE ID>"></script>
:listen <YOUR UNIQUE ID>
Ouvrez votre application sur votre appareil mobile, vous verrez les journaux de la console sur votre ordinateur.
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.
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.
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' )
}
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.
J'ai trouvé GapDebug vraiment utile. Contrairement à toute autre chose [cough cough weinre], il vous permet de consigner le journal de votre application locale