是什么原因导致“未经检查的runtime.lastError:消息端口在收到响应之前已关闭”。警告?

时间:2019-03-18 15:20:35

标签: google-chrome-extension

我进行了搜索,但这全都是关于人们抱怨该错误的信息。许多帖子说您应该检查所有扩展。

但是,这是我在开发扩展程序时遇到的。

这是怎么回事:

我在background.js上有一个侦听器:

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
  console.log('get:', request);
  if (request.hasOwnProperty('opt')) {
    trackPage('opt/' + request.opt);
  }
  return Promise.resolve("");
});

这是我的选项页中的触发器:

track('something');
function track(msg){
  chrome.runtime.sendMessage({opt: msg}, function(response) {
    console.log(response);
  });
}

触发track函数时发生错误。

如何完全解决错误?

4 个答案:

答案 0 :(得分:3)

您不能返回Promise来创建函数async,而必须返回true。所以改变这个:

return Promise.resolve("");

对此:

Promise.resolve("").then(result => sendResponse(result));
return true;

答案 1 :(得分:1)

如果您也在其他网站上看到此错误,也不要担心,因为它不是由您的应用(可能是某些Chrome扩展程序)生成的。

答案 2 :(得分:0)

我禁用了 Tampermonkey Chrome 扩展程序,错误消失了。

答案 3 :(得分:-1)

检查扩展镀铬,更新或删除或停用