如何解决“未选中的runtime.lastError:在收到响应之前关闭消息端口”的Chrome问题?

时间:2019-01-10 10:12:33

标签: laravel google-chrome vue.js

我正在为我的项目使用VueJS和Laravel。这个问题最近开始显示,甚至在旧的git分支中也显示。

此错误仅在Chrome浏览器中显示。

22 个答案:

答案 0 :(得分:31)

我禁用了Chrome中所有已安装的扩展程序-适用于我。 我现在已经清除了控制台,没有任何错误。

答案 1 :(得分:12)

如果转到chrome://extensions/,则可以一次切换每个扩展名,然后查看实际上是哪个触发了该问题。

关闭扩展名后,刷新看到错误的页面并摇动鼠标或单击。鼠标动作是引发错误的事情。

因此,我能够查明实际上是哪个扩展引起了该问题,并将其禁用。

答案 2 :(得分:9)

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"
  ]
}

答案 3 :(得分:7)

我已在this上回答过。

  

就我而言,问题是由于Video Downloader professionalAdBlock

简而言之,由于某些Google chrome插件

出现了此问题

答案 4 :(得分:5)

此错误通常是由您的一个Chrome扩展程序引起的。

我建议安装此One-Click Extension Disabler,并通过键盘快捷键 COMMAND(⌘) + SHIFT(⇧) + D 使用-快速禁用/启用我的所有扩展。

禁用扩展后,该错误消息就会消失。

和平! ✌️

答案 5 :(得分:3)

对于那些来这里调试Chrome 73中的错误的人来说,一种可能是因为Chrome 73开始禁止内容脚本中的跨域请求。

更多阅读内容:

  1. https://www.chromestatus.com/feature/5629709824032768
  2. https://www.chromium.org/Home/chromium-security/extension-content-script-fetches

这影响到许多Chrome扩展作者,他们现在需要争夺修复扩展,因为Chrome认为“我们的数据表明,大多数扩展不会受到此更改的影响。”

(与您的应用程序代码无关)

更新:我修复了CORs问题,但仍然看到此错误。我怀疑这是Chrome的错。

答案 6 :(得分:2)

在我的情况下,这是OneTab chrome扩展程序。

答案 7 :(得分:2)

确保使用正确的语法。

我们应该在收听后使用 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);
  }
});

答案 8 :(得分:1)

如果错误原因是扩展名,请使用隐身模式 Ctrl + Shift + N 。在隐身模式下,Chrome没有扩展程序。

答案 9 :(得分:1)

就我而言,它来自“自动反向链接检查器”扩展。也许这将有助于其他一些用户更轻松地解决他们的问题。我从一次禁用所有扩展到一一禁用它们。这样的痣。

致谢

答案 10 :(得分:1)

删除 OrangeMonkey Google Chrome 扩展程序对我来说很重要!

答案 11 :(得分:0)

在我的情况下,这是我自己的页面源中设置的断点。如果我删除或禁用了断点,则错误将清除。

断点位于渲染代码的中等复杂度中。页面不同部分中的其他断点没有这种效果。我无法制定出一个总是会触发此错误的简单测试用例。

答案 12 :(得分:0)

我正在将控制台日志数据从一个选项卡发送到另一个选项卡,但实际上并不需要第一个控制台。但是,错误消息确实使我烦恼,所以我右键单击并选择“不显示来自x网站的消息”。也许这是最简单的解决方法:)

答案 13 :(得分:0)

对我来说是Auto Tab Discard,它会在固定的标签上引发该错误。我创建了一个错误报告https://github.com/rNeomy/auto-tab-discard/issues/101

答案 14 :(得分:0)

如果您是扩展程序开发人员,并且已在此处搜索了自己的方法以尝试停止导致此错误:

问题不是CORB,因为受阻止的COR manifest as warnings就像-

  

跨源读取阻止(CORB)阻止了跨源响应   https://www.example.com/example.html,MIME类型为text / html。看到   https://www.chromestatus.com/feature/5629709824032768了解更多   详细信息。

问题很可能是对runtime.sendMessage的异步响应处理不当。为MDN says

  

要发送异步响应,有两种选择:

     
      
  • 从事件侦听器返回true。这保持sendResponse   该函数在侦听器返回后有效,因此您以后可以调用它。
  •   
  • 从事件监听器返回一个Promise,并解决   当您有响应时(或在出现错误时拒绝)。
  •   

当您发送异步响应但无法使用这两种机制时,sendResponse所提供的sendMessage参数超出范围,结果与错误消息完全相同:您的消息端口(消息传递设备)在收到响应之前已关闭。

Webextension-polyfill作者有already written about it in June 2018

因此,最重要的是,如果看到扩展程序导致了这些错误,请仔细检查所有onMessage侦听器。其中一些可能需要开始返回promise(将它们标记为异步就足够了)。

答案 15 :(得分:0)

如果浏览器上安装了任何防病毒扩展,则禁用。就我而言,反病毒扩展是罪魁祸首。

答案 16 :(得分:0)

看起来像Chrome的NoCoffee Vision Simulator扩展也会引起此错误。只是将其添加为人们寻找自己实例的潜在原因。

答案 17 :(得分:0)

我禁用了Chrome扩展程序“结帐时使用优惠券”,此问题已解决。

答案 18 :(得分:0)

答案 19 :(得分:0)

我的是一个名为 Color Contract Analyzer 的扩展。发现这个 github 问题中的链接与完全不同的东西有关

https://github.com/gatsbyjs/gatsby/issues/9899#issuecomment-463697368

答案 20 :(得分:0)

DuckDuckGo Privacy Essentials 在我的 Chrome 版本 91.0.4472.101 中导致了这个问题

答案 21 :(得分:0)

对我来说它是 StayFocusd,禁用它后我不再收到错误。