Console.log не работает в приложении iOS PhoneGap 3.0
Я обновляю приложение с PhoneGap 1.9 до PhoneGap 3.0. Функция console.log() больше не работает. Ранее выход был записан в консоли XCode. Каков наилучший способ восстановления функции ведения журнала?
Я читал: PhoneGap 2.0 не показывает console.log в XCode, но в PhoneGap 3.0 console.log не работает даже после события deviceReady.
Мне также интересно видеть ошибки javascript непосредственно в xcode.
Ответы
Ответ 1
Вам нужен плагин отладочной консоли, добавленный в ваш проект:
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-console.git
В более поздних версиях phonegap/cordova добавьте плагин отладочной консоли в свой проект:
cordova plugin add org.apache.cordova.console
Ответ 2
Оказалось, по крайней мере, в моем случае, что функция deviceready
для регистратора не вызывалась. Окончательная строка в logger.js
.
document.addEventListener("deviceready", logger.__onDeviceReady, false);
Решением (или действительно обходным) является вызов функции logger.__onDeviceReady
из вашей функции прослушивания deviceready
:
function onDeviceReady() {
if (window.cordova.logger) {
window.cordova.logger.__onDeviceReady();
}
}
document.addEventListener('deviceready', onDeviceReady, false);
Ответ 3
Я нашел JSconsole.com чрезвычайно, полезный для удаленного захвата журналов консоли с мобильных устройств.
Вот как вы его установили:
Откройте приложение на своем мобильном устройстве, вы увидите консольные журналы на вашем компьютере.
Ответ 4
Добавить консольный плагин, как в ответе Сэма, и обеспечить включение cordova.js на каждую страницу, иначе плагин не будет работать.
При использовании плагинов phonegap я добавлял phonegap.js в тег script, тогда я заметил, что плагины (любые) работают только на странице index.html. Когда я изменил phonegap.js на cordova.js, плагины (уведомление, камера и т.д.) Начали работать над остальными страницами. Если это кому-то поможет.
Ответ 5
Если вы установили консольный консоль Cordova, то при запуске приложения:
phonegap run iOS
вы найдете журналы:
[your project dir]/platforms/ios/cordova/console.log
для IOS. Все журналы консоли отображаются, как ожидалось.
Ответ 6
Проблема
При добавлении плагина консоли на платформу ios (или после переустановки) через интерфейс командной строки появляется следующее или подобное сообщение:
"Класс CDVPlugin CDVLogger (pluginName: Console) не существует.
Решение
Откройте проект Xcode и перейдите на вкладку "Сборка фаз". Теперь откройте раскрывающийся список "Источники компиляции". Нажмите на знак "+" в конце списка и добавьте "CDVLogger.m" или любой другой недостающий источник.
Ответ 7
Помимо добавления плагина Console у меня есть другое предположение, почему это может не сработать:
console.log в Phonegap называется асинхронно, поэтому, если будущий вызов завершается с ошибкой, вся функция завершается с ошибкой и все входящие в журнал вызовы проглатываются.
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' )
}
Ответ 8
Я нашел GapDebug действительно полезным. В отличие от всего остального [cough cough weinre], он позволяет вам управлять журналом из вашего локального приложения.