Node.js web memory error "Error: listen for EADDRNOTAVAIL Error: listen for EADDRNOTAVAIL"

The app works fine on localhost. But when he connects to the server he gets an error.
I am connecting the server on port 22

This is mistake

Error: listen EADDRNOTAVAIL Error: listen EADDRNOTAVAIL
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at net.js:1146:9
at dns.js:72:18
at process._tickCallback (node.js:419:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:906:3

      

Any help !!!

-update -

i run netstat -tulpn | grep 22

Result:

 tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      683/sshd
 tcp6       0      0 :::22                   :::*                    LISTEN      683/sshd

      

but i ran netstat -tulpn | grep 80

Nothing is displayed.

Any help. Is this a server bug?

works netstat -nlt

     Active Internet connections (only servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN
     tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN
     tcp        0      0 127.0.0.1:5902          0.0.0.0:*               LISTEN
     tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN
     tcp        0      0 0.0.0.0:6002            0.0.0.0:*               LISTEN
     tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
     tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
     tcp6       0      0 :::22                   :::*                    LISTEN
     tcp6       0      0 ::1:631                 :::*                    LISTEN

      

Running netstat -anp | grep :80

     tcp        1      0 162.243.145.226:60728   91.189.94.25:80         CLOSE_WAIT  1726/ubuntu-geoip-p
     tcp        1      0 162.243.145.226:47842   74.125.239.148:80       CLOSE_WAIT  8104/epiphany-brows
     tcp        1      0 162.243.145.226:60727   91.189.94.25:80         CLOSE_WAIT  1417/ubuntu-geoip-p
     tcp        1      0 162.243.145.226:58818   198.41.30.199:80        CLOSE_WAIT  8104/epiphany-brows

      

+3


source to share


4 answers


The port being used is in use. You must change the port, or you must kill the process that is listening on the port. Open terminal and write (example): lsof -i :22

or lsof -i :80

or lsof -i :8000

and kill PID

process.


How can I change listening PORT in total.js?

  • in / app / config or / app / config -release or / app / config-debug:
default-ip       : 127.0.0.1
default-port     : 8000

      

or



// For e.g. Heroku
default-ip       : auto
default-port     : auto

      

  1. if files exist: release.js or debug.js:
var fs = require("fs");
var options = {};

// options.ip = "127.0.0.1";
// options.port = parseInt(process.argv[2]);
options.port = 8000;

      

  1. if only index.js exists
// for development:
require('total.js').http('debug', { port: 8000 });

// or for production:
require('total.js').http('release', { port: 8000 });

      

Thanks and documentation: http://docs.totaljs.com

+4


source


I think you are using a Unix based OS, if so then you cannot use any port below 1024 without sudo access.

Also, before digging too deep, check that the listening port is not being used by any other process.

Quick fix (development only):

  • sudo node file.js

    or
  • server.listen(3000); // any number > 1024



For production (never start node when running with root access.)

you need to map the listening port (ex: 3000) to 80 using ip tables

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

      

+3


source


Port 22 is reserved for ssh and in the list of known ports please http://en.wikipedia.org/wiki/Port_(computer_networking)#Common_port_numbers

I would recommend that you run node development apps on ports 8000-9000, but you can use any of the registered ports range.

+1


source


Just saw it today. User commented 127.0.0.1 localhost

in his file /etc/hosts

and another network service resolved localhost

to a different IP address not associated with the user's machine.

The solution was to add this line to /etc/hosts

127.0.0.1 localhost

      

0


source







All Articles