适用于 chrome 的浏览器选项卡查询 "Receiving end does not exist"

Browser tab query "Receiving end does not exist" which works on chrome

后台脚本

browser.runtime.onMessage.addListener(function (event) {
  if( event.type === 'authenticate' ) {
    browser.tabs.query({active: true}, function(tab) {
      browser.tabs.sendMessage(tab[0].id, {
        method: 'main',
        auth0: "test"
      }, function() {});
    });
  }
});

内容脚本

browser.runtime.sendMessage({
  type: "authenticate"
});

browser.extension.onMessage.addListener(function(request, sender, sendResponse) {
  if( request.method == 'main' ) {
    login();
  } else if( request.method == 'logout' ) {
    logout();
  }
  sendResponse({});
});

事件通过并且选项卡 ID 正确,但来自 firefox 的调试信息显示 "Error: Could not establish connection. Receiving end does not exist."

在 chrome 事件回调完成。任何人都知道问题是什么?浏览 google 我发现 id 不正确,但我不确定这里的问题是什么。

使用browser.runtime.onMessage并更改

browser.tabs.query({active: true}, function(tab) {
  browser.tabs.sendMessage(tab[0].id, {
    method: 'main',
    auth0: "test"
  }, function() {});
});

browser.tabs.query({active: true, currentWindow: true}, function(tab) {
    chrome.tabs.sendMessage(tab[0].id, {
        method: 'main',
        auth0: "test"
    });
});

帮我修好了。