web-dev-qa-db-ja.com

console.logがiOS PhoneGap 3.0アプリで機能しない

PhoneGap 1.9からPhoneGap 3.0にアプリをアップグレードしています。 console.log()関数はもう機能していません。以前は、出力はXCodeコンソールで作成されていました。ロギング機能を復元する最良の方法は何ですか?

読みました: PhoneGap 2.0はXCodeにconsole.logを表示しません しかし、PhoneGap 3.0では、device.Readyイベントの後でもconsole.logは機能しません。

また、JavaScriptのエラーをxcodeで直接確認することにも興味があります。

21
poiuytrez

プロジェクトにデバッグコンソールプラグインを追加する必要があります。

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

31
Sam Thompson

少なくとも私の場合、ロガーのdeviceready関数が呼び出されていなかったことが判明しました。 logger.jsの最後の行。

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

解決策(または実際の回避策)は、devicereadyリスナー関数からlogger.__onDeviceReady関数を呼び出すことです。

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

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

JSconsole.comextremelyモバイルデバイスからコンソールログをリモートでキャプチャするのに役立ちました。

設定方法は次のとおりです。

  1. あなたのアプリのindex.htmlに、インクルード(IDを変更):

      <script src="http://jsconsole.com/remote.js?<MAKE UP SOME UNIQUE ID>"></script>
    
  2. コンピューターで、jsconsole.comに移動し、:listen <YOUR UNIQUE ID>

モバイルデバイスでアプリを開くと、コンピューターにコンソールログが表示されます。

9
Fostah

Samの答えのようにコンソールプラグインを追加し、すべてのページにcordova.jsを含めるようにしてくださいそうしないとプラグインが機能しません。

Phonegapプラグインを使用する場合、スクリプトタグにphonegap.jsを追加していましたが、プラグイン(any)はindex.htmlページでのみ機能することに気付きました。 phonegap.jsをcordova.jsに変更すると、プラグイン(通知、カメラなど)が残りのページで機能し始めました。これが誰かを助けるなら。

6
Muhammad Qasim

問題

コンソールプラグインをiOSプラットフォームに追加するとき(または再インストール後)にコマンドラインインターフェイスを介して次のエラーメッセージが表示されます:

"CDVPluginクラスCDVLogger(pluginName:Console)は存在しません。"

ソリューション

Xcodeプロジェクトを開き、[ビルドフェーズ]タブに移動します。次に、「ソースのコンパイル」という名前のドロップダウンを開きます。リストの最後にある「+」記号をクリックして、「CDVLogger.m」またはその他の不足しているソースを追加します。

3
Omnicon

Consoleプラグインを追加する以外に、なぜ機能しない可能性があるかという別の仮定があります。

phonegapのconsole.logは非同期に呼び出されるため、将来の呼び出しが失敗すると、関数全体が失敗し、その中のすべてのログ呼び出しが飲み込まれます。

  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

Cordovaコンソールプラグインをインストールしている場合、アプリを実行すると次のようになります。

phonegap run iOS

ログは次の場所にあります。

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

iOSの場合。すべてのコンソールログが期待どおりに表示されます。

3
user3051092

GapDebug は本当に便利だと思いました。他の[咳咳]とは異なり、ローカルアプリからログをコンソールで再生できます

0
Gobi Dasu