"use strict" require('dotenv').config(); const http = require('http'); const fs = require('fs'); const db = require('./models/index'); const app = require('./app'); const normalizePort = val => { const port = parseInt(val, 10); if (isNaN(port)) { return val; } if (port >= 0) { return port; } return false; }; const port = normalizePort(process.env.PORT || '3000'); app.set('port', port); const errorHandler = error => { if (error.syscall !== 'listen') { throw error; } const address = server.address(); const bind = typeof address === 'string' ? 'pipe ' + address : 'port: ' + port; switch (error.code) { case 'EACCES': console.error(bind + ' requires elevated privileges.'); process.exit(1); break; case 'EADDRINUSE': console.error(bind + ' is already in use.'); process.exit(1); break; default: throw error; } }; const server = http.createServer(app); server.on('error', errorHandler); server.on('listening', async () => { try { await db.sequelize.authenticate(); console.log('Connection to the database has been established successfully.'); } catch (error) { console.error('Unable to connect to the database:', error); process.exit(); } try { const address = server.address(); const bind = typeof address === 'string' ? 'pipe ' + address : 'port ' + port; console.log(`Listening on http://localhost:${port}`); console.log(`Swagger available on http://localhost:${port}/api-docs`); } catch (error) { console.error(`Unable start the server : ${error}`); process.exit(); } }); server.listen(port);