node.js 错误:连接 ECONNREFUSED;来自服务器的响应

Posted

技术标签:

【中文标题】node.js 错误:连接 ECONNREFUSED;来自服务器的响应【英文标题】:node.js Error: connect ECONNREFUSED; response from server 【发布时间】:2016-05-13 23:14:26 【问题描述】:

这个小程序有问题:

var http = require("http");
var request = http.request(
    hostname: "localhost",
    port: 8000,
    path: "/",
    method: "GET"
, function(response) 
    var statusCode = response.statusCode;
    var headers = response.headers;
    var statusLine = "HTTP/" + response.httpVersion + " " +statusCode + " " + http.STATUS_CODES[statusCode];
    console.log(statusLine);
    for (header in headers) 
        console.log(header + ": " + headers[header]);
    
    console.log();
    response.setEncoding("utf8");
    response.on("data", function(data) 
        process.stdout.write(data);
    );
    response.on("end", function() 
        console.log();
    );
);

控制台中的结果是这样的:

事件.js:141 投掷者; // 未处理的“错误”事件 ^ 错误:连接 ECONNREFUSED 127.0.0.1:8000 在 Object.exports._errnoException (util.js:870:11) 在exports._exceptionWithHostPort (util.js:893:20) 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1063:14)

我不明白为什么会这样。

【问题讨论】:

你想用代码实现什么? 发生这种情况是因为它无法连接到端点 - 在这种情况下,http://localhost:8000 无法访问 你应该在 localhost:8000 上运行一些东西吗?因为你现在看起来不像。 尝试使用其他程序。 8000 端口是免费的 @MarcoGhieri 你说的免费是什么意思?没有什么在听吗?这可以解释错误。 【参考方案1】:

从您的代码看来,您的文件包含向 localhost (127.0.0.1:8000) 发出 get 请求的代码。

问题可能是您没有在本地机器上创建服务器来监听端口 8000。

为此,您必须在 localhost 上设置可以满足您的请求的服务器。

    创建 server.js

    var express = require('express');
    var app = express();
    
    app.get('/', function (req, res) 
      res.send('Hello World!'); // This will serve your request to '/'.
    );
    
    app.listen(8000, function () 
      console.log('Example app listening on port 8000!');
     );
    

    运行 server.js : 节点 server.js

    运行包含发出请求的代码的文件。

【讨论】:

注意。作为一般规则,没有 root 权限运行的进程不能绑定到 1024 以下的端口。 @RoccoMusolino 上面的答案对我有用。在 iMac 上与此错误斗争一整天后,sudo 成功了!我想知道 node 或 ios(putting this here for web crawler) 在哪里得到127.0.0.1:80 即使禁用了所有代理设置,我仍然收到此错误【参考方案2】:

请使用 [::1] 代替 localhost,并确保端口正确,并将端口放在链接内。

const request = require('request');

   let json = 
        "id": id,
        "filename": filename
    ;
    let options = 
        uri: "http://[::1]:8000" + constants.PATH_TO_API,
        // port:443,
        method: 'POST',
        json: json
    ;
    request(options, function (error, response, body) 
        if (error) 
            console.error("httpRequests : error " + error);
        
        if (response) 
            let statusCode = response.status_code;
            if (callback) 
                callback(body);
            
        
    );

【讨论】:

你能解释一下为什么有人应该这样做吗? 这也适用于我。这背后的原理是什么? 也为我工作。一旦我将port 添加到options,错误就消失了。【参考方案3】:

我在我的 mac 上遇到了同样的问题,但在我的情况下,问题是我之前没有运行数据库 (sudo mongod);当我第一次在控制台上运行 mondo sudod 时,问题就解决了,一旦完成,在另一个控制台上,与服务器的连接......

【讨论】:

【参考方案4】:

我运行了本地的mysql数据库,但不是在管理员模式下,这引发了这个错误

【讨论】:

【参考方案5】:

如果您已经从任务管理器中停止了 mongod.exe 服务,则需要重新启动该服务。在我的情况下,我从任务管理器中停止了服务,并且在重新启动时它不会自动启动。

【讨论】:

【参考方案6】:

只需在节点项目中运行以下命令

npm install

它对我有用

【讨论】:

【参考方案7】:

我收到此错误是因为我的 AdonisJS 服务器在我运行测试之前没有运行。运行服务器首先修复它。

【讨论】:

【参考方案8】:

只需在节点项目中运行以下命令

npm 安装 它对我有用

【讨论】:

这是已提供答案的副本:***.com/a/66218118/17175441【参考方案9】:

这是非常轻微的错误。当我在 nodejs 上的进程之间实现事件服务器时。

只需检查您用于运行服务器的软件包,例如 Axios

也许您已经重新定位了文件或断开了浏览器上的某些缓存数据。

很简单,在你的相关目录中运行以下命令

我用的是axios所以我用了

npm i axios

重启服务器

npm start

这行得通,

谢谢 万国数据KS

【讨论】:

【参考方案10】:

在代码中使用代理属性应该可以正常工作

const https = require('https');
const request = require('request');

request(
    'url':'https://teamtreehouse.com/chalkers.json',
    'proxy':'http://xx.xxx.xxx.xx'
    ,
    function (error, response, body) 
        if (!error && response.statusCode == 200) 
            var data = body;
            console.log(data);
        
    
);

【讨论】:

以上是关于node.js 错误:连接 ECONNREFUSED;来自服务器的响应的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 中的“连接 EMFILE”错误

Node.js MySQL - 错误:连接 ECONNREFUSED

node.js中curl的连接错误

postgres 与 node.js 连接中的 SASL 错误

在 node.js 中编写 ECONNRESET 错误和套接字连接检查

Heroku + MongoLab 插件与 Node.js 应用程序的连接错误 - 错误:连接 ECONNREFUSED 127.0.0.1:27017