Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Node.js + Express: app won't start listening on port 80

Node.js + Express: app won't start listening on port 80

Problem

I create and launch an app like this:

express -s -t ejs
npm install express
npm install ejs
node app.js

and it works (on Port 3000). But when I go and change the port to 80, then running node app.js outputs this:

node.js:198
throw e; // process.nextTick error, or 'error' event on first tick
          ^
TypeError: Cannot call method 'getsockname' of null
at HTTPServer.address (net.js:746:23)
at Object. (/var/www/thorous/app.js:35:67)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array. (module.js:470:10)
at EventEmitter._tickCallback (node.js:190:26)

This works too on my laptop, but not on my Amazon EC2 instance, where port 80 is open. Can figure out what's wrong. Any tips?

Problem courtesy of: Vitaly

Solution

Are you starting your app as root? Because lower port numbers require root privileges. Maybe a sudo node app.js works?

BUT, you should NOT run any node.js app on port 80 with root privileges!!! NEVER!

My suggestions is to run nginx in front as a reverse proxy to your node.js app running on port e.g. 3000

Solution courtesy of: Thomas Fritz

Discussion

View additional discussion.



This post first appeared on Node.js Recipes, please read the originial post: here

Share the post

Node.js + Express: app won't start listening on port 80

×

Subscribe to Node.js Recipes

Get updates delivered right to your inbox!

Thank you for your subscription

×