What could cause "connect ETIMEDOUT" error when the URL is working in browser?

I train myslef with NodeJS and tried a simple GET call. Here is my code:

var http = require('http');
var options = { host: ' path: '/xmlapi/boardgame/1?stats=1', method: 'GET'
}
var request = http.request(options, function (response) { var str = "" response.on('data', function (data) { str += data; }); response.on('end', function () { console.log(str); });
});
request.on('error', function (e) { console.log('Problem with request: ' + e.message);
});
request.end();

The URL called seems to work in my browser

Anyway, I've got Problem with request: connect ETIMEDOUT when I run the code and I have no idea how to fix it.

What could cause this error ? Is it my code or is it a network/proxy issue?

2

8 Answers

When behind a proxy you need to make the following modifications (as explained in this answer):

  • put the proxy host in the host parameter
  • put the proxy port in the port parameter
  • put the full destination URL in the path parameter :

Which gives:

var options = { host: '<PROXY_HOST>', port: '<PROXY_PORT>', path: ' method: 'GET', headers: { Host: ' }
}
3

In my case it was because of http but not https as required

The following change with the request worked for me:

 var options = { proxy:'PROXY URL', uri: 'API URL', method: 'GET' } request(options, function (err, response, body) { if(err){ console.log('error:', err); } else { console.log('body:', body); } });

In my case it was a misconfigured subnet. Only one of the 2 subnets in the ELB worked. But my client kept trying to connect to the misconfigured one.

if you have URL like :

 URL: 'localhost:3030/integration', 

The URL above cause some issues because HTTP does not exist at the beginning of URL so Just change it to it should work.

URL: ' 

If this error occurs while using POSTMAN.

So, when you call a request in Postman and the API requires your VPN to be up before you can make a successful call. You will need to connect or reconnect your VPN.

In my case, I was working on a company's laptop. I found out it was the VPN that was down.

I was facing this issue on Ubuntu Server while maintaining a node instance on PM2. Basically after restarting the instance after taking the pull I was getting the same error on initial connection of mySQL inside the code.

Error: connect ETIMEDOUT
at Connection._handleConnectTimeout (/home/deam_server/node_modules/mysql/lib/Connection.js:419:13)
at Object.onceWrapper (events.js:275:13)
at Socket.emit (events.js:182:13)
at Socket.EventEmitter.emit (domain.js:442:20)
at Socket._onTimeout (net.js:447:8)
at ontimeout (timers.js:427:11)
at tryOnTimeout (timers.js:289:5)
at listOnTimeout (timers.js:252:5)
at Timer.processTimers (timers.js:212:10)

Though the same code was running perfectly on my local machine. After that I used "df" command which helped me to realise that my root directory was 100% occupied. I allotted some memory to the root directory and the restarted the node instance and then it started working fine.

In my case, I was getting this error because the body of my post api was very large.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like