node.js Error: connect ECONNREFUSED; response from server
Asked Answered
C

10

48

I have a problem with this little program:

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();
    });
});

The result in console is this:

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: connect ECONNREFUSED 127.0.0.1:8000
    at Object.exports._errnoException (util.js:870:11)
    at exports._exceptionWithHostPort (util.js:893:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1063:14)

I do not understand why this happens.

Cranberry answered 4/2, 2016 at 11:5 Comment(9)
What do you want to achieve with the code?Kirkham
That happens because it could not connect to the endpoint - in this case http://localhost:8000 is not reachableIntima
Are you supposed to have something running on localhost:8000? Because it doesn't look like you do right now.Rebellious
trying with other programs is reached. Port 8000 is freeCranberry
@MarcoGhieri what do you mean by free? There's nothing listening on it? That would explain the error.Decreasing
I had the same problem, not sure why I couldn't get a response from the server. The answer is in "Promise" For my situation, 1. I checked from cli that node is listening on my port 2. I was able to use curl to make a request to it and it was all good. 3. The problem was when I use the "request" module, it ran it before the server could get back to me, so I downloaded 'request-promise' and that solved the problem. This is not an answer but for those who have been searching, you can see if the async, sync thing is your hint.Backchat
I am facing the same issue and the reason is that my node program is calling one rest api. I get this error if that rest api is not accessible. Can someone tell me how to handle that exception, because it crashes my node server which i want to avoid.Serotherapy
I get the same when using mysql2 or mysqljs node libraryLesser
I was running node 17 (on a M1 Mac) and I removed it via brew uninstall node and then install node 16 with brew install node@16. Worked a treat. I may have had to brew link --force node@16 but I can't remember right now.Away
S
48

From your code, It looks like your file contains code that makes get request to localhost (127.0.0.1:8000).

The problem might be you have not created server on your local machine which listens to port 8000.

For that you have to set up server on localhost which can serve your request.

  1. Create 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!');
     });
    
  2. Run server.js : node server.js

  3. Run file that contains code to make request.

Sharonsharona answered 4/2, 2016 at 14:31 Comment(2)
NB. As as a general rule processes running without root privileges cannot bind to ports below 1024.Terefah
@RoccoMusolino answer above worked for me. After fighting with this error for a whole day on an iMac, sudo did the trick! I wonder where node or iOS(putting this here for web crawler) was getting 127.0.0.1:80 Even with all proxy settings disabled, I still got this errorAllowable
G
18

Please use [::1] instead of localhost, and make sure that the port is correct, and put the port inside the link.

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);
            }
        }
    });
Gusman answered 19/6, 2019 at 8:14 Comment(3)
Can you explain why someone should do it this way?Favien
this works for me too. What is the rationale behind this?Quintie
Also worked for me. Once I added the port to the options the error went away.Levon
T
2

I solved this problem with redis-server, you can install that like this!

sudo apt-get install redis-server

after that see the port and change it!

Tangible answered 15/6, 2022 at 7:59 Comment(0)
H
1

I had the same problem on my mac, but in my case, the problem was that I did not run the database (sudo mongod) before; the problem was solved when I first ran the mondo sudod on the console and, once it was done, on another console, the connection to the server ...

Hellkite answered 8/5, 2019 at 18:32 Comment(0)
C
0

i ran the local mysql database, but not in administrator mode, which threw this error

Cogon answered 23/11, 2019 at 19:32 Comment(0)
G
0

If you have stopped the mongod.exe service from the task manager, you need to restart the service. In my case I stopped the service from task manager and on restart it doesn't automatically started.

Gotama answered 25/6, 2020 at 6:33 Comment(0)
P
0

Just run the following command in the node project:

npm install

Its worked for me.

Pyrethrin answered 16/2, 2021 at 2:53 Comment(3)
I don't see how this relates to the question that's being asked.Derick
fair point @daveyvdweide. but it solved my issue anyway. so thanks manikandan!Maros
man. i pulled my hair for this. it didn't come to my mind to update deps after a major update and i checkedout to master and it needed update.Unlikelihood
Q
0

I got this error because my AdonisJS server was not running before I ran the test. Running the server first fixed it.

Quickel answered 19/2, 2021 at 23:32 Comment(0)
D
-1

I had the same issue on postman ,when try to connect docker container ,just double check the port your server is running and the endpoint (port you are tring to access),I changed the port it worked for me

Deedeeann answered 29/3, 2023 at 19:24 Comment(0)
H
-6

use a proxy property in your code it should work just fine

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);
        }
    }
);
Humboldt answered 24/3, 2018 at 13:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.