Swagger running on Heroku: port issues?

I am using nodeJS, express, swagger-tools to get a Swagger API document showing from / docs in my Heroku dynamics. Locally this works, but the port does not listen on Heroku.

app[web.1]: info: Swagger-ui is available on localhost:5765/docs
heroku[web.1]: State changed from crashed to starting
heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
heroku[web.1]: Stopping process with SIGKILL
heroku[web.1]: Process exited with status 137

In the code, I have a port predefined by Heroku.

var listen_addr = 'localhost';
var listen_port = process.env.PORT || 8080;

var swaggerDoc = require(options.swaggerUi);
swaggerDoc.host = listen_addr +":" + listen_port;    // making sure of add

swaggerTools.initializeMiddleware(swaggerDoc, function (middleware) {

  app.use(middleware.swaggerMetadata());
  app.use(middleware.swaggerValidator());           
  app.use(middleware.swaggerUi() );             
  app.use(middleware.swaggerRouter(options) );

  app.listen(listen_port, listen_addr) {      
    winston.info('Server is listening on %s:%d', listen, port);
    winston.info('Swagger-ui is available on %s:%d/docs', listen, port);
  });
});

UPDATE: the problem seemed to be resolved by changing app.listen to app.listen (process.env.PORT || 3000, function ()

+4
source share

Source: https://habr.com/ru/post/1626338/


All Articles