10

I deployed an Loopback app to Heroku, but it keeps crashing with error

Web process failed to bind to $PORT within 60 seconds of launch

I know it could be connected to the dynamic port of Heroku, so I set my port to the process environment one doing

app.start = function () {
  // start the web server

  var port = process.env.PORT || 3000;

  app.set('port', port);

  app.use(loopback.static(path.resolve(__dirname, '../client')));
  app.use(loopback.static(path.resolve(__dirname, '../.tmp')));

  return app.listen(function () {
    app.emit('started');
    console.log('Web server listening at: %s', app.get('url'));
  });
};

but this didn't fix the issue.
Any idea?

pasine
  • 11,311
  • 10
  • 49
  • 81

2 Answers2

1

You can force Heroku to use provided port by modifying the code as provided in the documentation. If you can't relate to api docs, don't worry it's because javascript is flexible.

app.start = function () {
  // start the web server

  var port = process.env.PORT || 3000;

  app.use(loopback.static(path.resolve(__dirname, '../client')));
  app.use(loopback.static(path.resolve(__dirname, '../.tmp')));

  return app.listen(port, function () {
    app.emit('started');
    console.log('Web server listening at: %s', app.get('url'));
  });
};
xangy
  • 1,185
  • 1
  • 8
  • 19
0

I had thesame problem. I solved it by adding an environment variable HOST=0.0.0.0 in my Heroku app.

Heroku app environment variables

Jérémy Buget
  • 168
  • 2
  • 11