Node.js 如何修复';未选中的runtime.lastError:无法建立连接。接收端不存在;

Node.js 如何修复';未选中的runtime.lastError:无法建立连接。接收端不存在;,node.js,google-chrome-devtools,Node.js,Google Chrome Devtools,在我的Node/Express/React应用程序的每个页面加载中,Chrome Dev Tools控制台中都有以下错误: 未选中的runtime.lastError:无法建立连接。接收端不存在 此错误引用了localhost/:1。当我把鼠标悬停在这个上面时,它显示http://localhost:3000/,我在浏览器中查看应用的地址 有人知道发生了什么吗?我发现出现此错误的大多数其他线程似乎都与试图开发Chrome扩展的人有关,即使如此,他们也往往很少有响应。我一直收到完全相同的错误(除了

在我的Node/Express/React应用程序的每个页面加载中,Chrome Dev Tools控制台中都有以下错误:

未选中的runtime.lastError:无法建立连接。接收端不存在

此错误引用了localhost/:1。当我把鼠标悬停在这个上面时,它显示http://localhost:3000/,我在浏览器中查看应用的地址


有人知道发生了什么吗?我发现出现此错误的大多数其他线程似乎都与试图开发Chrome扩展的人有关,即使如此,他们也往往很少有响应。

我一直收到完全相同的错误(除了我的应用程序没有后端和React前端),我发现它不是来自我的应用程序,它实际上来自“视频速度控制器”的Chrome扩展。如果您不使用该扩展,请尝试禁用所有扩展,然后逐个重新启用它们

该错误通常是由chrome扩展引起的。
尝试禁用所有扩展,问题应该会消失。

解决方案

对于铬:

  • 如果窗口打开时出现控制台错误,请打开第二个新窗口

  • 在第二个窗口中,转到: chrome://extensions

  • 通过切换(每张卡右下角的蓝色滑块)禁用每个扩展,并在切换每个扩展后使用控制台刷新窗口

  • 如果没有错误,请删除扩展名


  • 对我来说,这个错误是由于onelogin chrome扩展造成的。删除它解决了这个问题。

    这是在Chrome上发生的,我发现是McAfee WebAdvisor。一旦我禁用它,消息就消失了:

    删除“Udacity前端反馈”chrome扩展为我解决了这个问题。

    在我的情况下,缓存扩展-但是是的,请禁用每个,然后重新加载页面

    这是我的选项卡绑定器:


    禁用扩展解决了这个问题。

    对我来说,这是一些扩展。禁用然后重新启用修复了问题。语法是其中之一。希望错误不会再出现。

    我在
    edge://extensions/
    第页/选项卡。在另一个选项卡上测试解决了这个问题。我认为
    chrome://extensions/

    奇怪的是,对于我自己,我只是禁用了所有扩展,错误就消失了


    然而,在重新启用我禁用的所有功能后,错误仍然没有出现

    如果您是一名扩展开发人员,请参见此


    问题的核心是ChromeAPI行为发生了变化,您需要为其添加一个解决方案

    我在开发Chrome扩展时发现了同样的问题。我终于找到了关键问题

    未选中的runtime.lastError:无法建立连接。接收端不存在

    关键问题是当
    background.js
    通过chrome.tabs.sendMessage向活动选项卡发送消息时,页面上的
    content.js
    未就绪或未重新加载。调试时。我们必须确保content.js处于活动状态。而且它不能是一个没有刷新的页面,旧页面不会更新js本身

    这是我的密码:

    //background.js
    chrome.tabs.query({active: true, currentWindow: true},function(tabs) {
      chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
          console.log(response);
      });
    }); 
    
    
    //content.js
    chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
        console.log(request, sender, sendResponse);
        sendResponse('我收到你的消息了:'+JSON.stringify("request"));
    });
    

    这通常是由扩展引起的

    如果不想禁用或删除导致此错误的扩展,可以通过在控制台的筛选器框中键入
    -/^Unchecked\sruntime\.lastError\:\sCould\snot\sestablish\sconnection\。\sreiving\send\sdoes\snot\sexist\.$/
    来过滤掉此特定错误:


    据我所知,此筛选器将一直保留,直到您手动删除它,您可以根据需要关闭和重新打开控制台,重新启动Chrome等,并且筛选器将永远不会自动删除。

    我只在第一个Chrome页面上收到消息=
    当Chrome没有运行时,我会直接打开它,或者双击桌面上的某个页面。
    (我不知道这是否重要,但我已经关闭了“谷歌浏览器关闭后继续运行后台应用程序”。
    所以,我假设这是Chrome的垃圾间谍/增强用户体验的尝试。
    我不知道它想发送什么,但我很高兴它无法发送!:)
    因此,第二个(或第一个以外的任何)选项卡没有错误。

    ==无需禁用任何功能(扩展等)。

    您需要在
    运行时.sendMessage
    回调中处理
    window.chrome.runtime.lastError
    。这个错误需要处理。下面是我的代码:

    //background.js
    chrome.tabs.query({active: true, currentWindow: true},function(tabs) {
      chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
          console.log(response);
      });
    }); 
    
    
    //content.js
    chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
        console.log(request, sender, sendResponse);
        sendResponse('我收到你的消息了:'+JSON.stringify("request"));
    });
    
    window.chrome.runtime.sendMessage(
    分机号,
    {message:'-“},//jsp消息
    (结果)=>{
    如果(!window.chrome.runtime.lastError){
    //消息处理代码在这里
    }否则{
    //错误处理代码在这里
    }
    }
    );
    });
    
    未选中的runtime.lastError:无法建立连接。接收端不存在


    之后我“实现”了这个错误

  • 在Visual Studio代码中安装Chrome扩展的调试器
  • 调试我的代码,以及
  • 关闭并重新打开非调试Chrome窗口。()

  • 解决:
    • 停止使用分机
    • 刷新非调试Chrome窗口
    • 使用不同的调试器

    当然,当我使用Chrome调试器重做上面的步骤2和步骤3时,控制台错误再次出现。这鼓励我改用其他调试器。那么我就不会错误地认为我自己的代码产生了控制台错误

    对我来说,这是由以下原因造成的:

    Iobit冲浪保护和Ads删除扩展

    它与Iobit高级系统维护软件一起提供。但是,控制台可能会向您提供有关需要执行的操作或问题原因的相关信息

    根据谷歌sea,这一错误的可能原因是什么