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;
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 ()
source
share