javascript - 是什么导致了 "Unchecked runtime.lastError: The message port closed before a response was received."警告?

标签 javascript 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函数被触发。

我怎样才能完全修复错误?

最佳答案

您不能返回 Promise使函数async , 你必须返回 true .所以改变这个:

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

关于javascript - 是什么导致了 "Unchecked runtime.lastError: The message port closed before a response was received."警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55224629/

相关文章:

javascript - 如何从中心(平移)Google Maps API 获取地址?

javascript - 谷歌驱动器选择器 : Show only top level folders

javascript - 检查是否安装了扩展,如果用户删除扩展则关闭选项卡

javascript - Nodejs 流(错误 : Can't set headers after they are sent)

javascript - 以负值开头的 d3.js bar

javascript - 使用 javaScript SDK 登录 Parse.com

javascript - 如何检测 chrome 中的用户不活动?

javascript - 仅使用 chrome.storage.local.set 更新指定元素

javascript - 有没有办法在手机 chrome 上创建 devtools 面板

chrome 插件中的 Javascript 有语法错误