首页 > 解决方案 > 错误:连接到本地主机上的任何内容时连接 ECONNREFUSED 127.0.0.1

问题描述

我尝试从 node.js 后端连接到在 localhost 上运行的不同服务器。每个服务器都在一个 docker 容器中运行。当我执行 http 请求时,当连接到本地主机上的任何内容时,我收到“错误:连接 ECONNREFUSED 127.0.0.1:80”或“错误:连接 ECONNREFUSED 错误:连接 ECONNREFUSED 127.0.0.1:4200”。我的代码如下所示:

const http = require('http');

const xy = http.get('http://localhost/path', (r) =>{
  console.log(r);
});
xy.on('error', e => {
  console.log(e);
});

const xz = http.get('http://localhost:4200', (r) =>{
  console.log(r);
});
xz.on('error', e => {
  console.log(e);
});

我不明白,为什么它不起作用。浏览器中的相同请求确实有效。连接到 google.com 等不同的 URL 也可以。这是 netstat -na 的输出:

tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:4222            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:4200            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN  

有人有想法吗?

问候

标签: javascriptnode.jsdockerhttp

解决方案


localhost容器内是指容器本身,而不是您的笔记本电脑/服务器。所以其他服务没有在那里运行。

如果你想从一个容器连接到另一个容器,你应该使用容器的名称而不是 localhost。

此外,容器需要在同一个网络中


推荐阅读