【问题标题】:console.log not working in an iOS PhoneGap 3.0 appconsole.log 在 iOS PhoneGap 3.0 应用程序中不起作用
【发布时间】:2013-10-11 13:46:52
【问题描述】:

我正在将应用程序从 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 错误。

【问题讨论】:

    标签: ios xcode cordova


    【解决方案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

    【讨论】:

    • 它是否适合您开箱即用?我的 xcode 控制台中没有任何额外的日志。
    • 它适用于 hello world 项目,但不适用于我的真实应用程序项目。这让我发疯了。
    • 您能否在 xcode 控制台中看到语法或任何错误?即使在 HelloWorld 中,我也看不到控制台中的错误。
    • 我收到错误“[error] project directory could not be found”。有谁知道是什么问题?谢谢。
    • 我们添加了插件并确保 phonegap.js 高于对“console.log”的任何调用,但 Xcode 中仍然没有出现任何内容。有什么线索吗?
    【解决方案2】:

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

    【讨论】:

    • 我的问题是 - 它在 HelloWorld 项目中工作,但在我从我的(主)Android 项目中合并我的“www”文件夹代码之后却没有。你的解决方案救了我!
    • 这也修复了我损坏的 console.log。
    • 这也解决了我的 console.log 问题。
    【解决方案3】:

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

    以下是您的设置方式:

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

        <script src="http://jsconsole.com/remote.js?<MAKE UP SOME UNIQUE ID>"></script>
      
    2. 在您的计算机上,转到 jsconsole.com 并输入 :listen &lt;YOUR UNIQUE ID&gt;

    在您的移动设备上打开您的应用,您将在您的计算机上看到控制台日志。

    【讨论】:

    • 我无法包含来自其他域的脚本。有什么帮助吗? (请发链接)
    【解决方案4】:

    按照 Sam 的回答添加控制台插件,并确保在每个页面上都包含 cordova.js,否则插件无法正常工作。

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

    【讨论】:

      【解决方案5】:

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

      phonegap run iOS
      

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

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

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

      【讨论】:

      • 我没有找到文件 console.log,当我尝试重新安装插件时,我得到“已经安装,'sall good”
      • 对于@Cherif 不久前的评论(以防其他人来这里),您必须运行 rm 插件命令并且对于配置问题,这个线程(stackoverflow.com/a/23934073/955861)很好并且安装插件后帮助我解决了构建错误。运行 rm 命令 cordova plugin rm org.apache.cordova.console 并尝试再次运行安装。如果您再次遇到构建错误,请查看其他 SO 线程。
      【解决方案6】:

      问题

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

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

      解决方案

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

      【讨论】:

        【解决方案7】:

        除了添加控制台插件之外,我还有另一个假设为什么它可能不起作用:

        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' )
          }
        

        【讨论】:

        • 这对应于我所看到的。这使得调试非常困难。有没有办法解决这个问题?
        【解决方案8】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-19
          • 1970-01-01
          • 2014-01-17
          • 1970-01-01
          相关资源
          最近更新 更多