【问题标题】:My chrome extension doesn't show errors to console, but it shows logs我的 chrome 扩展程序不会向控制台显示错误,但会显示日志
【发布时间】:2012-07-21 07:57:13
【问题描述】:

我遇到了一个让我彻底发疯的问题。

我的 chrome 扩展程序没有向开发者工具控制台报告任何错误。 BUT:它仍然会写日志,工作正常,页面上的非扩展脚本仍然报告错误。

我看到一些词,扩展程序的错误可以显示在 popup.html 的 DevTools 窗口中,但我的扩展程序没有(并且不能按设计,它是为解析其他页面而设计的)使用 popup.html 在全部。

最糟糕的是,连扩展名的语法错误(!)都没有显示出来。如果你能给我这个问题的解决方案,我将永远感激不尽,因为在没有语法错误通知的情况下调试扩展是一个巨大的痛苦:(

UPD:

看起来,问题是只有在一个页面上我看不到错误:在我的脚本运行的其他页面上我可以看到console.errors()。

Rob W,抱歉,但这并不能回答我的问题。我可以使用console.log(),但我不能看到console.error()的输出,无论是脚本中的实际错误还是我自己调用的控制台。错误()。我的脚本不使用后台脚本,只使用某些页面的某些脚本,如下面的 manifest.json 中:

{
    "manifest_version": 2,
    "permissions": ["tabs", "http://*/*", "https://*/*", "file:///*/*"],
    ...
    "content_scripts": [{ 
            // I can see my errors here...
        "matches": ["http://www.site.ru/*type=cheats*"],
        "js": ["cheats.js"]
    },{
            // and here...
        "matches": ["http://www.site.ru/bitrix/admin/iblock_element_edit.php*type=games*"],
        "js": ["idb.js","data.js","framework.js","script.js","wikipic.js"],
        "css":["styles.css"],
            "all_frames": true  
    },{
        "matches": ["http://www.site.ru/bitrix/admin/iblock_element_search.php*"],
        "js": ["search.js"]
    },{
            // >>>> But not here! <<<<
        "matches": ["http://www.site.ru/cheats/*"],
        "js": ["keys.js", "adhocparse.js", "resumeer.js", "ground.js"],
        "css": ["resumeer.css"]
    }]
}

UPD 2:我试过这段代码:

console.log(console, console.log, console.error);
console.error("Error one");
throw new Error("Error two");

我有这个输出:

Console function log() { [native code] } function error() { [native code] }
Error one

所以:console.error 有效,但所有抛出的错误(例如语法错误)都会以某种方式全局捕获。很奇怪,因为:

  1. 我的扩展程序中没有任何问题;
  2. 页面本身仍然会产生很多错误(但它们发生在调用我的扩展代码之前),以及很多 GET 错误(无法获取文件,即使在调用我的扩展代码之后,但它们似乎无法捕获,我猜)

那么什么可以全局捕获错误呢?

看来这不是 Chrome 扩展问题,添加了标签 javascript。

【问题讨论】:

  • 欢迎来到 Stack Overflow。这个问题前面已经有人问过了,你可以在这个帖子找到问答:Where to read console messages from background.js in a Chrome extension?
  • 如果你将错误调用夹在两个日志调用(如log('foo'); error('bar'); log('baz');)之间怎么办?您是否看到两个日志而不是错误?还是您只看到第一个日志?可能console.error 已被重写,或者某种try/catch 操作正在捕获您的错误,从而阻止其显示。
  • 然后只显示第一个日志,之后什么都没有。它似乎与console.error无关,请参阅更新2。

标签: javascript google-chrome-extension


【解决方案1】:

在我想写扩展的网站上,有这段代码导致了这种行为:

window.onerror
function stopError(){return true;}

【讨论】:

    猜你喜欢
    • 2022-10-21
    • 2016-02-08
    • 2016-06-04
    • 2020-05-14
    • 2021-11-02
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多