我在我的项目中使用VueJS和Laravel。这个问题最近开始出现,甚至在旧的git分支中也出现了。
此错误仅在Chrome浏览器中显示。
我在我的项目中使用VueJS和Laravel。这个问题最近开始出现,甚至在旧的git分支中也出现了。
此错误仅在Chrome浏览器中显示。
当前回答
如果你是一个扩展开发人员,你在谷歌上搜索了一下,试图停止引起这个错误:
问题不是CORB(正如这里的另一个答案所述),因为阻塞的CORs显示为警告,如-
跨源读阻塞(CORB)用于阻塞跨源响应 https://www.example.com/example.html与MIME类型文本/html。看到 https://www.chromestatus.com/feature/5629709824032768获取更多信息 细节。
该问题很可能是对runtime.sendMessage的异步响应处理不当。正如MDN所说:
要发送一个异步响应,有两个选项: 从事件监听器返回true。这将保留sendResponse 函数在侦听器返回后有效,因此可以稍后调用它。 从事件监听器返回一个Promise,并解析 当您获得响应时(或在出现错误时拒绝它)。
当您发送一个异步响应但没有使用这两种机制中的任何一种时,sendMessage提供的sendResponse参数超出了作用域,结果就像错误消息所说的那样:您的消息端口(消息传递设备)在接收到响应之前关闭了。
webextend -polyfill的作者已经在2018年6月写过关于它的文章。
所以底线,如果你看到你的扩展导致这些错误-仔细检查你所有的onMessage监听器。其中一些可能需要开始返回承诺(将它们标记为异步就足够了)。(谢谢@vdegenne)
其他回答
如果错误原因是扩展使用隐式Ctrl+Shift+N。在隐身模式下Chrome没有扩展。
乌利希期刊指南。如果你需要一些隐身模式的扩展,例如ReduxDevTools或其他,在扩展设置中打开“允许隐身模式”
对我来说,我用的是一个叫 免费VPN Chrome - VPN代理VeePN它是导致错误后禁用它只是…错误消失了
Post是相当老的,与Chrome扩展开发没有密切关系,但让它在这里。
我也有同样的问题,在回调回复消息。解决方案是在后台消息侦听器中返回true。
下面是一个关于background.js的简单例子。它响应来自popup.js的任何消息。
chrome.runtime.onMessage.addListener(function(rq, sender, sendResponse) {
// setTimeout to simulate any callback (even from storage.sync)
setTimeout(function() {
sendResponse({status: true});
}, 1);
// return true; // uncomment this line to fix error
});
这里是popup.js,它在popup上发送消息。你会得到异常,直到你在background.js文件中取消注释“return true”行。
document.addEventListener("DOMContentLoaded", () => {
chrome.extension.sendMessage({action: "ping"}, function(resp) {
console.log(JSON.stringify(resp));
});
});
清单。json,以防万一:)注意警报权限部分!
{
"name": "TestMessages",
"version": "0.1.0",
"manifest_version": 2,
"browser_action": {
"default_popup": "src/popup.html"
},
"background": {
"scripts": ["src/background.js"],
"persistent": false
},
"permissions": [
"alarms"
]
}
如果你是一个扩展开发人员,你在谷歌上搜索了一下,试图停止引起这个错误:
问题不是CORB(正如这里的另一个答案所述),因为阻塞的CORs显示为警告,如-
跨源读阻塞(CORB)用于阻塞跨源响应 https://www.example.com/example.html与MIME类型文本/html。看到 https://www.chromestatus.com/feature/5629709824032768获取更多信息 细节。
该问题很可能是对runtime.sendMessage的异步响应处理不当。正如MDN所说:
要发送一个异步响应,有两个选项: 从事件监听器返回true。这将保留sendResponse 函数在侦听器返回后有效,因此可以稍后调用它。 从事件监听器返回一个Promise,并解析 当您获得响应时(或在出现错误时拒绝它)。
当您发送一个异步响应但没有使用这两种机制中的任何一种时,sendMessage提供的sendResponse参数超出了作用域,结果就像错误消息所说的那样:您的消息端口(消息传递设备)在接收到响应之前关闭了。
webextend -polyfill的作者已经在2018年6月写过关于它的文章。
所以底线,如果你看到你的扩展导致这些错误-仔细检查你所有的onMessage监听器。其中一些可能需要开始返回承诺(将它们标记为异步就足够了)。(谢谢@vdegenne)
对于那些来这里调试Chrome 73中的这个错误的人来说,一种可能是因为Chrome 73以后不允许内容脚本中的跨源请求。
更多阅读:
https://www.chromestatus.com/feature/5629709824032768 https://www.chromium.org/Home/chromium-security/extension-content-script-fetches
这影响了许多Chrome扩展的作者,他们现在需要努力修复扩展,因为Chrome认为“我们的数据显示大多数扩展不会受到这个变化的影响。”
(这与你的应用程序代码无关)
更新:我修复了CORs问题,但我仍然看到这个错误。我怀疑这是Chrome的错。