在开发谷歌插件过程中,突然报错下面内容,并无法消除。
这是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"})
这一段不调用的话就会报文章开头的错误,但是很多情况下并没有调用,而发送函数自己却使用到了,从而导致这个错误。