我正在为我的项目使用VueJS和Laravel。这个问题最近开始显示,甚至在旧的git分支中也显示。
此错误仅在Chrome浏览器中显示。
我正在为我的项目使用VueJS和Laravel。这个问题最近开始显示,甚至在旧的git分支中也显示。
此错误仅在Chrome浏览器中显示。
Answers:
我禁用了Chrome中所有已安装的扩展程序-适用于我。我现在已清除控制台,没有错误。
如果您是扩展程序开发人员,并且在这里搜索了自己的方法以尝试停止导致此错误:
问题不是CORB,因为被阻止的COR 表现为警告,例如-
跨域读取阻止(CORB)阻止了MIME类型为text / html的跨域响应 https://www.example.com/example.html。有关更多详细信息,请参见 https://www.chromestatus.com/feature/5629709824032768。
问题很可能是对runtime.sendMessage的异步响应处理不当。正如MDN所说:
要发送异步响应,有两个选项:
- 从事件侦听器返回true。这使sendResponse函数在侦听器返回之后保持有效,因此您可以稍后对其进行调用。
- 从事件侦听器返回一个Promise,并在收到响应时解决(或在发生错误时拒绝它)。
当您发送异步响应但无法使用这两种机制中的任何一种时,提供的sendResponse
参数sendMessage
将超出范围,结果与错误消息所述的完全相同:在响应被关闭之前,您的消息端口(消息传递设备)已关闭收到。
Webextension-polyfill的作者已经在2018年6月撰写了有关它的文章。
因此,最重要的是,如果您看到扩展引起这些错误,请仔细检查所有onMessage侦听器。其中一些可能需要开始返回promise (将它们标记为异步应该足够了)。[感谢@vdegenne]
async/await
用于后台侦听器回调。这对我来说是失败的,我删除了结构并将其async
转换await
为then
结构代码,现在它可以工作了。
return true;
在chrome.runtime.onMessage.addListener()函数的底部,问题就解决了!我$.ajax
在此函数内部使用jQuery ,这就是为什么我需要此修复程序的原因。
如果您访问chrome:// extensions /,则可以一次切换每个扩展名,然后查看实际上是哪个触发了该问题。
关闭扩展名后,刷新看到错误的页面,然后左右摆动鼠标或单击。鼠标动作是引发错误的事情。
因此,我能够查明实际上是哪个扩展引起了问题,并将其禁用。
Google Publisher Toolbar
在维瓦尔第(Vivaldi)vivaldi://extensions
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,它在弹出窗口上发送消息。在取消注释background.js文件中的“ return true”行之前,您将获得例外。
document.addEventListener("DOMContentLoaded", () => {
chrome.extension.sendMessage({action: "ping"}, function(resp) {
console.log(JSON.stringify(resp));
});
});
manifest.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"
]
}
return false
有用?
This function becomes invalid when the event listener returns, unless you return true
。什么意思无效?它不是应该每次收到消息时都创建吗?
对于那些来这里调试Chrome 73中的错误的人来说,一种可能是因为Chrome 73以后开始禁止内容脚本中的跨域请求。
更多阅读:
这影响到许多Chrome扩展作者,他们现在需要争夺修复扩展,因为Chrome认为“我们的数据表明,大多数扩展不会受到此更改的影响。”
(与您的应用程序代码无关)
更新:我修复了CORs问题,但仍然看到此错误。我怀疑这是Chrome的错。
此错误通常是由您的Chrome扩展程序之一引起的。
我建议安装此“ 一键式扩展程序禁用程序”,并将其与键盘快捷键COMMAND (⌘)+ SHIFT (⇧)+结合使用D,以快速禁用/启用所有扩展程序。
一旦扩展被禁用,此错误消息就会消失。
和平!✌️
确保使用正确的语法。
我们应该在侦听它之后使用sendMessage()方法。
下面是一个简单的例子contentScript.js它sendRequest将到app.js。
contentScript.js
chrome.extension.sendRequest({
title: 'giveSomeTitle', params: paramsToSend
}, function(result) {
// Do Some action
});
app.js
chrome.extension.onRequest.addListener( function(message, sender,
sendResponse) {
if(message.title === 'giveSomeTitle'){
// Do some action with message.params
sendResponse(true);
}
});
对我来说是Auto Tab Discard
,它会在固定的标签上抛出该错误。我创建了一个错误报告,https://github.com/rNeomy/auto-tab-discard/issues/101。