Google chrome extension 控制台中的Chrome扩展抛出错误

Google chrome extension 控制台中的Chrome扩展抛出错误,google-chrome-extension,Google Chrome Extension,我的内容脚本向background.js发送消息。在响应的回调处理程序中,我的最后一行是“alrt\u msg)”。在执行代码时,我会收到警报框,但单击“确定”后,chrome控制台会显示以下红色: Error in event handler for 'undefined': Cannot call method 'disconnect' of null TypeError: Cannot call method 'disconnect' of null at chromeHidden

我的内容脚本向background.js发送消息。在响应的回调处理程序中,我的最后一行是
“alrt\u 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) 
信息量不大,但直觉上我知道这个错误是因为当用户单击“OK”时,某个地方的某些结构被垃圾收集。所以我把我的代码作为

window.setTimeout(函数(){alrt(alrt_msg);},1)


这使得它的工作没有上述错误。尽管如此,在搜索文档或谷歌后,我还是无法找到这背后的确切原因。有人能解释一下发生了什么,文档中是否有具体的方法可以做到这一点吗?

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

这是我的密码:

在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\u msg\u handler
中。但是Chrome控制台不会告诉你这些细节。如果没有IDE,您必须添加一些console.log进行调试。

我也有同样的错误。这是iMacros应用程序。删除后没有错误。

您的代码是什么?如果您插入
并返回true,该怎么办
在您的
onMessage
事件侦听器的末尾?我相信原因是消息响应的处理程序没有等待单击警报;因此,当您关闭警报以允许脚本继续时,处理程序不再存在。我不确定这是否会被视为bug。@Goodwine,我相信你是对的。我相信@Goodwine是正确的,如果你打算异步发送响应,你应该总是
返回true
。我通常在实际消息上设置一个名为
async
的字段。此字段被选中,如果为true,则处理程序
返回true
。我或多或少遇到了相同的问题。所以,是的,检查你的代码是否有错误,伙计,你实际上没有在这里解释任何事情。代码中的哪些内容导致抛出此错误?