Javascript 获取对background.js的响应时:未选中runtime.lastError:无法建立连接

Javascript 获取对background.js的响应时:未选中runtime.lastError:无法建立连接,javascript,google-chrome-extension,Javascript,Google Chrome Extension,noobie JS dev在这里,我正在开发一个chrome扩展,我有两个脚本,background.JS和popup.JS-我需要根据background.JS中的一些操作调用popup.JS中的一个函数,所以我发现我可以发送消息。这对我来说很好,但是我还需要将response发送回background.js脚本,我在popup.html:1中得到了这个错误 未选中的runtime.lastError:无法建立连接。接收端不存在 有趣的是,控制台从检查视图:背景@chrome://extens

noobie JS dev在这里,我正在开发一个chrome扩展,我有两个脚本,background.JS和popup.JS-我需要根据background.JS中的一些操作调用popup.JS中的一个函数,所以我发现我可以发送消息。这对我来说很好,但是我还需要将response发送回background.js脚本,我在popup.html:1中得到了这个错误

未选中的runtime.lastError:无法建立连接。接收端不存在

有趣的是,控制台从检查视图:背景@chrome://extensions/ 记录响应良好,但控制台检查弹出窗口时记录未定义并显示错误

谢谢你的帮助

(以下代码已简化)

background.js:

    chrome.runtime.sendMessage('hi', response => {
      console.log(response);
    });

popup.js

chrome.runtime.onMessage.addListener(
    function (message, sender, sendResponse) {
        if (message == 'hi') {
            //some DOM actions here
            sendResponse('bye');
        }
        return true;
    });

刚刚删除了@wOxxOm建议的
return true

刚刚删除了@wOxxOm建议的
return true

假设您知道弹出代码只在显示时运行,那么您的后台脚本应该在适当的时间发送消息,这是唯一明显的事情(没有看到实际的扩展名)同步响应时是否不需要
返回true
。@wOxxOm是的,我知道只有当弹出窗口打开时,它才会运行,这部分很好。我删除了返回的true;它确实有效,但我非常困惑,因为我实际上添加了这一行,因为没有它它就无法工作,在其他一些帖子中,有人说它会有所帮助。xDDD所以idk以前出了什么问题,但无论如何,谢谢..@wOxxOm我知道这可能是太多的问题了,但由于我对这一切都很陌生,你能给我介绍一些材料,解释一下为什么
return true
会将同步更改为异步吗?也许这两者之间也有什么区别(我只知道一些基础知识)。请参阅假设您知道弹出代码仅在显示时运行,因此您的后台脚本应在适当的时间发送消息,这是唯一显而易见的事情(没有看到实际的扩展名)同步响应时是否不需要
返回true
。@wOxxOm是的,我知道只有当弹出窗口打开时,它才会运行,这部分很好。我删除了返回的true;它确实有效,但我非常困惑,因为我实际上添加了这一行,因为没有它它就无法工作,在其他一些帖子中,有人说它会有所帮助。xDDD所以idk以前出了什么问题,但无论如何,谢谢..@wOxxOm我知道这可能是太多的问题了,但由于我对这一切都很陌生,你能给我介绍一些材料,解释一下为什么
return true
会将同步更改为异步吗?也许这两者之间有什么区别(我只知道一些基本知识)。看到了吗