You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.8 KiB
71 lines
1.8 KiB
"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);
|