Javascript 未触发browser.runtime.onMessage

Javascript 未触发browser.runtime.onMessage,javascript,google-chrome-extension,firefox-addon-webextensions,Javascript,Google Chrome Extension,Firefox Addon Webextensions,我正在开发firefox扩展,script.js中有以下代码: browser.runtime.sendMessage({book:book,link:book.reviewsLink,type:"getBSR"}, (response) => { console.log(response); //CODE }); 在background.js中: browser.runtime.onMessage.addListener((request, sender, sen

我正在开发firefox扩展,script.js中有以下代码:

browser.runtime.sendMessage({book:book,link:book.reviewsLink,type:"getBSR"}, (response) => {
        console.log(response);  
//CODE 
});
在background.js中:

browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
    console.log("HELLO FROM BACKGROUND");
    //CODE
});
script.js会立即打印“undefined”,但在后台控制台不会打印“HELLO FROM background”,因此侦听器无法工作。我的chrome扩展上有相同的代码,唯一改变的是chrome.runtime而不是browser.runtime


我真的很困惑,因为Mozilla文档的代码和我的完全一样。

正如wOxxOm所提到的,
浏览器
返回一个
承诺
,而
浏览器
返回一个
回调
函数。这意味着:

// callback
chrome.runtime.sendMessage({book:book,link:book.reviewsLink,type:"getBSR"}, (response) => {
        console.log(response);  
//CODE 
});

// Promise
browser.runtime.sendMessage({book:book,link:book.reviewsLink,type:"getBSR"}).then((response) => {
        console.log(response);  
//CODE 
});

同样正如wOxxOm所提到的,没有足够的信息来正确回答。每个都在什么时候运行,在哪个上下文中etc

firefoxwebextension应该在侦听器中执行
return
(允许使用Promise),而不是调用sendResponse或返回
true
。至于这个问题,听起来你可能有两个听众,一个不同的听众首先回答。如果我不亲自尝试扩展,我就无能为力了。