57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
// Importation des dépendances et des fichiers nécessaires
|
|
const app = require('./app');
|
|
const logger = require('./utils/logger');
|
|
const database = require('./db/db-connect');
|
|
|
|
// Port par défaut ou port fourni par les variables d'environnement
|
|
let port = process.env.PORT || 3000;
|
|
|
|
// Fonction pour tenter de démarrer le serveur sur un port spécifique
|
|
async function tryStartServerOnPort(port) {
|
|
return new Promise((resolve, reject) => {
|
|
// Tentative d'écoute sur le port
|
|
const server = app.listen(port, () => {
|
|
logger.log('info', `EasyTransport est lancé sur le port ${port}`);
|
|
logger.log('info', `Vous pouvez accéder à EasyTransport en renseignant "localhost:${port}" dans un navigateur.`);
|
|
resolve();
|
|
})
|
|
.on('error', (error) => {
|
|
server.close();
|
|
reject(error);
|
|
});
|
|
});
|
|
}
|
|
|
|
// Fonction principale pour démarrer le serveur
|
|
async function startServer() {
|
|
// Tentative de connexion à la base de données
|
|
try {
|
|
await database.connect();
|
|
} catch (error) {
|
|
logger.log('error', "Erreur lors de la connexion à la base de données", error);
|
|
process.exit(1);
|
|
}
|
|
|
|
// Tentative de démarrage du serveur
|
|
while (true) {
|
|
try {
|
|
await tryStartServerOnPort(port);
|
|
break;
|
|
} catch (error) {
|
|
// Gestion d'erreur si le port est déjà en cours d'utilisation
|
|
if (error.code === 'EADDRINUSE') {
|
|
logger.log('warn', `Le port ${port} est déjà utilisé, tentative sur le port ${++port}.`);
|
|
} else {
|
|
logger.log('error', "Erreur lors du démarrage du serveur", error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Démarrage du serveur
|
|
startServer().catch(error => {
|
|
logger.log('error', "Erreur inattendue", error);
|
|
process.exit(1);
|
|
});
|