4

我遇到了一个让我完全发疯的问题。

我的 chrome 扩展程序不会向开发者工具控制台报告任何错误。但是:它仍然会写日志,工作通常很好,并且页面上的非扩展脚本仍然报告它们的错误。

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

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

升级版:

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

Rob W,对不起,但这并不能回答我的问题。我可以使用console.log(),但我不到console.error() 的输出,无论是来自脚本中的实际错误还是我自己调用的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. Page itself still generates a lot of errors (but they occur before calling my extension code), and a lot of GET errors (unable to get a file, even after calling my extension code, but they seem to be uncatchable, I guess)

So what can catch errors globally?

It appears that this is not a Chrome extension issue, added tag javascript.

4

1 回答 1

0

On the site I wanted to write the extension for there was this code which caused such behavior:

window.onerror
function stopError(){return true;}
于 2015-11-18T13:00:03.577 回答