browser.runtime.onMessage 未触发

browser.runtime.onMessage not triggered

我正在开发一个 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 所述,browser returns 一个 Promisechrome returns 一个 callback 函数。这意味着:

// 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 所提到的,那里没有足够的信息来正确回答。每个 运行 在什么情况下等