Node.js 如何修复';未选中的runtime.lastError:无法建立连接。接收端不存在;
在我的Node/Express/React应用程序的每个页面加载中,Chrome Dev Tools控制台中都有以下错误: 未选中的runtime.lastError:无法建立连接。接收端不存在 此错误引用了localhost/:1。当我把鼠标悬停在这个上面时,它显示http://localhost:3000/,我在浏览器中查看应用的地址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扩展的人有关,即使如此,他们也往往很少有响应。我一直收到完全相同的错误(除了
有人知道发生了什么吗?我发现出现此错误的大多数其他线程似乎都与试图开发Chrome扩展的人有关,即使如此,他们也往往很少有响应。我一直收到完全相同的错误(除了我的应用程序没有后端和React前端),我发现它不是来自我的应用程序,它实际上来自“视频速度控制器”的Chrome扩展。如果您不使用该扩展,请尝试禁用所有扩展,然后逐个重新启用它们 该错误通常是由chrome扩展引起的。
尝试禁用所有扩展,问题应该会消失。解决方案 对于铬:
对我来说,这个错误是由于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:无法建立连接。接收端不存在
之后我“实现”了这个错误
解决:
- 停止使用分机
- 刷新非调试Chrome窗口
- 使用不同的调试器
当然,当我使用Chrome调试器重做上面的步骤2和步骤3时,控制台错误再次出现。这鼓励我改用其他调试器。那么我就不会错误地认为我自己的代码产生了控制台错误 对我来说,这是由以下原因造成的: Iobit冲浪保护和Ads删除扩展 它与Iobit高级系统维护软件一起提供。但是,控制台可能会向您提供有关需要执行的操作或问题原因的相关信息 根据谷歌sea,这一错误的可能原因是什么