【问题标题】:Chrome Devtools console hides all messages from remote deviceChrome Devtools 控制台隐藏来自远程设备的所有消息
【发布时间】:2020-10-22 16:28:27
【问题描述】:

我正在使用 ios-webkit-debug-proxy 和 remotedebug-ios-webkit 适配器在 Linux 上从 Chrome Devtools 调试运行 Safari 的 IOS iPad。

它已连接,我可以查看 DOM 等,但 console.log() 消息不会显示在控制台中。我可以看到隐藏消息数量增加,但我找不到查看消息的方法。

它最初可以工作,但已停止。我尝试通过“设置->首选项->开发工具->恢复默认值并重新加载”将开发工具重置为默认值,但没有运气。

请看截图:

任何帮助将不胜感激。

【问题讨论】:

  • 我有同样的问题,但在 Windows 上。它显示了隐藏的数量以及侧边栏中的来源,但我可以做任何我想做的事情。隐藏的消息不会出现。最有趣的是错误计入隐藏项,但每个错误都会显示一个 2 px 高的红色横幅,就像它显示错误一样,但没有任何文本和 2 px 的高度。
  • 我也碰到了这堵墙,我在 Chromium 错误跟踪器上找不到任何错误报告,所以我不确定这是设计使然还是错误。我想出的唯一解决方案是将 console.debug() 调用替换为自定义方法,该方法将消息存储在 observable 中,并将它们显示在我可以在应用程序中最小化的 DIV 中。

标签: google-chrome-devtools ios-webkit-debug-proxy


【解决方案1】:

与另一个答案类似,console.info 似乎可以代替标准的console.log

如果您在记录任何内容之前运行console.log = console.info;,它将按预期工作。

【讨论】:

    【解决方案2】:

    我可以通过更改文件ios.ts 中的onConsoleMessageAdded 函数来解决此问题

    更新了一段代码

    let message = msg.params.message;
        let type;
        let method = "Runtime.consoleAPICalled";
        if(message.type === "log") {
            switch(message.level) {
                    case "log": type = "log"; break;
                    case "info": type = "info"; break;
                    case "error": type = "error"; break;
                    default: type = "log";
            }
        } else {
            type = message.type;
        }
    
        const consoleMessage = {
            source: message.source,
            level: type,
            text: message.text,
            lineNumber: message.line,
            timestamp: (new Date).getTime(),
            url: message.url,
            stackTrace: message.stackTrace ? {
                callFrames: message.stackTrace
            } : undefined,
            args:message.parameters,
            networkRequestId: message.networkRequestId,
        };
        if(type == "error"){
            method = "Log.entryAdded"; 
            this._target.fireEventToTools(method, {entry:consoleMessage});
        }else
            this._target.fireEventToTools(method, consoleMessage);
        
        return Promise.resolve(null);
    }
    

    【讨论】:

    • 这个方案其实是解决了问题。如果他也提到文件的位置会更好。
    【解决方案3】:

    您可以使用 console.error 代替 console.log。

    【讨论】:

    • 投反对票,因为此解决方案没有帮助,请参阅@schl3ck 对 OP 的评论
    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 2013-03-27
    • 2016-04-18
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多