是什么导致了“Unchecked runtime.lastError:消息端口在收到响应之前关闭。” 警告?

dar*_*977 10 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("");
});
Run Code Online (Sandbox Code Playgroud)

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

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

track函数被触发时会发生错误。

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

Gir*_*rpa 6

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

return Promise.resolve("");
Run Code Online (Sandbox Code Playgroud)

对此:

Promise.resolve("").then(result => sendResponse(result));
return true;
Run Code Online (Sandbox Code Playgroud)