【发布时间】: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 有效,但所有抛出的错误(例如语法错误)都会以某种方式全局捕获。很奇怪,因为:
- 我的扩展程序中没有任何问题;
- 页面本身仍然会产生很多错误(但它们发生在调用我的扩展代码之前),以及很多 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