在开发谷歌插件过程中,突然报错下面内容,并无法消除。
在这里插入图片描述
这是chrome版本73更新后的问题。

stackoverflow查询得出的结果是跨域问题。
然而在解决完所有跨域后仍然报错,也就是说并不是跨域导致的

解决方案

这是由于某一脚本页(content-script.js or background.js or popup.js)使用了chrome.runtime.sendMessage或者tabs.sendMessage并调用了回调函数接收函数并没调用导致的。

简单来看一段代码

//content-script.js

   chrome.runtime.sendMessage({
                    action: "server",
                    source: "test",
                },function(e){
                    alert('ok');
                });

上面的消息发送函数发送了test消息,并调用了回调函数用来alter(‘ok’)。

background.js

 chrome.extension.onMessage.addListener(
   function (request, sender, sendResponse) {
     if (request.action === "server") {
     var a= 0;
    
     } } );

而这里如果这样写,只处理逻辑,并不调用回调函数sendResponse(),就会出现文章开头的错误

正确的写法如下

//background.js

 chrome.extension.onMessage.addListener(
   function (request, sender, sendResponse) {
     if (request.action === "server") {
     var a= 0;
       sendResponse({farewell: "ok"});   //注意,注意,注意就是这个sendResponse函数一定要调用,否则就会报错
     } } );

也就是说sendResponse({farewell: "ok"})这一段不调用的话就会报文章开头的错误,但是很多情况下并没有调用,而发送函数自己却使用到了,从而导致这个错误。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐