开发者问题收集

Chrome 扩展程序在控制台中抛出错误

2012-09-19
8050

我的内容脚本向 background.js 发送一条消息。在响应的回调处理程序中,我将最后一行设置为 “alert(alrt_msg)” 。执行代码后,我得到了警告框,但在单击“确定”后,chrome 控制台以红色显示以下内容:

Error in event handler for 'undefined': Cannot call method 'disconnect' of null TypeError: Cannot call method 'disconnect' of null
    at chromeHidden.Port.sendMessageImpl (miscellaneous_bindings:285:14)
    at chrome.Event.dispatch (event_bindings:237:41)
    at Object.chromeHidden.Port.dispatchOnMessage (miscellaneous_bindings:250:22) 

它没有太多信息,但直觉上我知道这个错误是因为用户单击“确定”时某个地方的某些结构被垃圾收集了。所以我将代码设置为

window.setTimeout(function() { alert(alrt_msg); } , 1);

这使得它能够正常工作而不会出现上述错误。尽管如此,在搜索文档或谷歌后,我还是无法找到背后的确切原因。有人可以解释一下发生了什么,以及文档是否包含执行此操作的具体方法吗?

2个回答

我也遇到了同样的问题。这是由于响应处理程序中调用的函数中出现错误(我的代码错误)。

这是我的代码:

在 background.js - 监听端

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    var update_msg = 'test';
    sendResponse({data: update_msg});
    return false; // -> Add this or not add this do not matter
  });
}

在发送端:

function updateObjDatabase(obj) {
  chrome.runtime.sendMessage({data: obj}, function(response) {
    // Update when it's done
    update_msg_handler(response.data);
  });
}

function update_msg_handler(msg) {
  ..... error code here
}

错误的代码实际上在函数 update_msg_handler 中。但 Chrome 控制台不会告诉您这些详细信息。如果您没有 IDE,则必须添加一些 console.log 进行调试。

AGamePlayer
2013-06-15

我有同样的错误。这是Imacros应用。删除它没有错误后。

Aleksandr_A
2017-11-15