console.log无法在iOS PhoneGap 3.0应用程序中运行

时间:2013-10-04 14:04:15

标签: ios xcode cordova

我正在将应用程序从PhoneGap 1.9升级到PhoneGap 3.0。 console.log()函数不再起作用。以前,输出是在XCode控制台中编写的。恢复日志记录功能的最佳方法是什么?

我已阅读:PhoneGap 2.0 doesn't show console.log in XCode但是在PhoneGap 3.0中,即使在deviceReady事件之后,console.log也不起作用。

我也有兴趣直接在xcode中看到javascript错误。

8 个答案:

答案 0 :(得分:31)

您需要将调试控制台插件添加到项目中:

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

答案 1 :(得分:30)

事实证明,至少在我的情况下,记录器的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);

答案 2 :(得分:9)

我发现JSconsole.com 非常对于从移动设备远程捕获控制台日志非常有用。

下面是你如何设置它:

  1. 在你的应用程序index.html中,包含(更改ID):

      <script src="http://jsconsole.com/remote.js?<MAKE UP SOME UNIQUE ID>"></script>
    
  2. 在您的计算机上,转到jsconsole.com并输入:listen <YOUR UNIQUE ID>
  3. 在您的移动设备上打开您的应用,您将在计算机上看到控制台日志。

答案 3 :(得分:6)

在Sam的回答中添加控制台插件,并在每个页面上确保包含cordova.js ,否则无法使用插件。

当使用phonegap插件时,我在脚本标签中添加了phonegap.js,然后我注意到插件(任何)仅在index.html页面上工作。当我将phonegap.js更改为cordova.js时,插件(通知,相机等)开始在其余页面上工作。如果这有助于任何人。

答案 4 :(得分:3)

如果您已经安装了Cordova控制台插件,那么当您运行应用时:

phonegap run iOS

您将在以下位置找到日志:

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

对于IOS。所有控制台日志都按预期显示。

答案 5 :(得分:3)

<强>问题

通过命令行界面将控制台插件添加到ios平台(或重新安装后)时,会出现以下或类似的错误消息:

  

“CDVPlugin类CDVLogger(pluginName:Console)不存在。”

<强>解决方案

打开Xcode项目并转到“Build Phases”选项卡。现在打开名为“Compile Sources”的下拉列表。单击列表末尾的“+”符号并添加“CDVLogger.m”或任何其他缺少的源。

答案 6 :(得分:3)

除了添加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' )
  }

答案 7 :(得分:0)

我发现GapDebug非常有用。与其他任何东西[咳嗽咳嗽]不同,它让你从本地应用程序控制日志