refont back express
This commit is contained in:
82
backend/server.js
Normal file
82
backend/server.js
Normal file
@@ -0,0 +1,82 @@
|
||||
import express from 'express';
|
||||
import cors from 'cors';
|
||||
import apiRoutes from './routes/apiRoutes.js';
|
||||
import corsOptions from './config/cors.js'
|
||||
import {apiKeyMiddleware} from './middleware/apiKeyMiddleware.js';
|
||||
import dotenv from 'dotenv';
|
||||
import cookieParser from 'cookie-parser';
|
||||
import pool from "./config/db.js";
|
||||
import * as path from "node:path";
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const envFile = `.env`;
|
||||
dotenv.config({ path: path.resolve(process.cwd(), envFile), override: true });
|
||||
|
||||
const app = express();
|
||||
|
||||
// Utiliser CORS
|
||||
app.use(cors(corsOptions));
|
||||
|
||||
// Utilisation des cookies
|
||||
app.use(cookieParser());
|
||||
|
||||
// Middleware pour parser les corps de requêtes JSON
|
||||
app.use(express.json());
|
||||
|
||||
// Utilisation des fichiers/images
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));
|
||||
|
||||
// Middleware pour vérifier la clé API (Authorization)
|
||||
app.use('/', apiKeyMiddleware);
|
||||
|
||||
// Utiliser les routes API
|
||||
app.use('/', apiRoutes);
|
||||
|
||||
// Middleware pour les routes non trouvées
|
||||
app.use((req, res) => {
|
||||
res.status(404).json({
|
||||
message: 'Forbidden: Invalid Request',
|
||||
status: false
|
||||
});
|
||||
});
|
||||
|
||||
// Test de conenxion à la base de donnée
|
||||
const testDatabaseConnection = async () => {
|
||||
let conn;
|
||||
try {
|
||||
conn = await pool.getConnection();
|
||||
console.log('✅ Connexion à la base de données réussie ! 🎉');
|
||||
} catch (err) {
|
||||
console.error('❌ Erreur de connexion à la base de données :', err.message);
|
||||
throw new Error('⛔ Impossible de se connecter à la base de données.');
|
||||
} finally {
|
||||
if (conn) await conn.end();
|
||||
}
|
||||
};
|
||||
|
||||
// Lancer le serveur
|
||||
const startServer = async () => {
|
||||
while (true) {
|
||||
try {
|
||||
console.log(`🚀 Lancement de l'API en cours... 🔧`);
|
||||
await testDatabaseConnection();
|
||||
app.listen(process.env.PORT, () => {
|
||||
console.log(`📢 NODE_ENV = ${process.env.NODE_ENV} 🌍`);
|
||||
console.log(`📢 Chargement du fichier : ${envFile} 📄`);
|
||||
console.log(`🚀 API démarrée sur le port ${process.env.PORT} 🎯`);
|
||||
console.log(`🌍 Allowed Origin : ${process.env.ALLOWED_ORIGIN} 🔗`);
|
||||
console.log(`✅ L'API est lancée et prête à l'emploi ! 🎉`);
|
||||
});
|
||||
break;
|
||||
} catch (err) {
|
||||
console.error('❌ Le serveur n’a pas pu démarrer :', err.message);
|
||||
console.log('⏳ Nouvelle tentative de démarrage dans 5 secondes... 🔄');
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
startServer();
|
||||
|
||||
Reference in New Issue
Block a user