502 Bad Gateway Deploying Express Generator Template on Elastic Beanstalk

For clarity, I’ll state the answer from the comments.

AWS ELB runs node app.js BEFORE npm start. node app.js doesn’t give an error, but it doesn’t open any ports.

The solution is to simply rename app.js to anything else except server.js (ie main.js) and reference that in bin/www by pointing to it in the /bin/www file: var app = require('../app'); to var app = require('../main');

Then it should be working correctly!


For clarity, here is what my directory looks like:

The package.json file will get called by ELB when it launches the application server. Here it has the instruction to run the start script node bin/www
enter image description here

This is the bin/www file that gets run. We see the require to ../main and the app.set('port'...)
enter image description here

Then the main.js file that runs the routing and all:
enter image description here

When I created the project, the main.js file was named app.js. The problem this caused was based on the priority ELB start sequences. ELB will launch the application and check first to see if app.js exists — if it does exist, it runs node app.js, otherwise it will check if package.json exists and try to run npm start.
When the main.js had the name app.js ELB tried to start the whole application by running it. However this file doesn’t open any ports.

Leave a Comment