未捕获错误的原因:尝试使用断开连接的端口对象

时间:2011-03-17 10:15:26

标签: google-chrome-extension messaging

我在回复请求时在后台页面中收到此错误 来自内容脚本。 有谁知道导致这个错误的原因是什么?

完整堆栈跟踪:

Uncaught Error: Attempting to use a disconnected port object   chrome/RendererExtensionBindings:147 
chrome.Port.postMessage     chrome/RendererExtensionBindings:147 
chromeHidden.Port.dispatchOnConnect.connectEvent         chrome/RendererExtensionBindings:89 
myExtension.foo.sendResponse.state      background.js:1573 
db.readTransaction.tx.executeSql.paramStr      background.js:1038 

这只发生在几个小时的浏览重新加载扩展后没有帮助 - 不是说重新启动Chrome浏览器后它将成为一个解决方案所有恢复正常几个小时内容脚本可以继续发送请求到后台但没有响应 从后台可以发回来有没有办法我可以捕获这个未捕获的错误并重置监听器?

我正在使用chrome.extension.onRequest.addListener进行沟通。在我回复之前,我查询数据库,在查询完成之前我不发送任何其他响应。

谢谢, 马立克

2 个答案:

答案 0 :(得分:18)

这是在连接关闭时引起的。例如,如果您打开一个注入了content_script的选项卡,它会打开一个连接,该选项卡将关闭,然后background_page会尝试传递一条消息。它将失败,因为选项卡不再处于活动状态以接收消息。

在您的情况下,我猜测当标签关闭并打开新标签时,您尝试使用旧标签发布消息,而不是创建与新标签的新连接。我建议再次阅读long-lived connections section

答案 1 :(得分:3)

但是,在我的情况下,我需要向chrome.runtime.sendMessage(msg,responseCallbackMissingHere)提供sendResponse函数,它将为您提供“尝试使用断开连接的端口对象”错误。