我遇到了一个让我完全发疯的问题。
我的 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 有效,但所有抛出的错误(例如语法错误)都会以某种方式全局捕获。这很奇怪,因为:
- 我的扩展中没有任何问题;
- 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.