Javascript &引用;Unchecked runtime.lastError:消息端口在收到响应之前关闭;铬延伸

Javascript &引用;Unchecked runtime.lastError:消息端口在收到响应之前关闭;铬延伸,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在构建一个chrome扩展,并试图在我的背景和内容脚本之间创建连接,但'chrome.runtime.lastError设置为: 消息端口在收到响应之前关闭。 我遵循了这个解决方案,并添加了“return true”以将其标记为Aynchronous,以保持端口打开,但仍然得到一个错误。这是我的密码 bacground.js chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { var message = {

我正在构建一个chrome扩展,并试图在我的背景和内容脚本之间创建连接,但'chrome.runtime.lastError设置为:

消息端口在收到响应之前关闭。

我遵循了这个解决方案,并添加了“return true”以将其标记为Aynchronous,以保持端口打开,但仍然得到一个错误。这是我的密码

bacground.js

chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
  var message = { message: "tab has been updated, read HTML from tab" };
  chrome.tabs.sendMessage(tabId, message);

  //send second message
  chrome.tabs.sendMessage(
    tabId,
    { tabCreated: "true" },
    function (response) {
      if (chrome.runtime.lastError){
        console.log(chrome.runtime.lastError)
      }
      console.log("received response from context page", response)
      contextPageWidth = response.pageWidth
    });

});
content.js

  chrome.runtime.onMessage.addListener((request, sendResponse) => {
    sendResponse({pageWidth:"100"})
    return true;
  });
有人知道我哪里出错了吗?

您需要向事件侦听器添加“sender”参数,如下所示:

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
        sendResponse({message:foo})
        return true;
      });
有关更多文档,请访问:

您需要向事件侦听器添加“sender”参数,如下所示:

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
        sendResponse({message:foo})
        return true;
      });

有关更多文档,请访问:

这基本上是一个输入错误:您在
请求
之后错过了
发送者
参数,请参阅文档。顺便说一句,您不需要在此处
返回true
。同时移除第一个chrome.tabs.sendMessage(tabId,message);这基本上是一个输入错误:您在
请求
之后错过了
发送者
参数,请参阅文档。顺便说一句,您不需要在此处
返回true
。同时移除第一个chrome.tabs.sendMessage(tabId,message);