first
This commit is contained in:
80
src/server.js
Normal file
80
src/server.js
Normal file
@@ -0,0 +1,80 @@
|
||||
const express = require('express');
|
||||
const path = require('path');
|
||||
const config = require('config');
|
||||
const bodyParser = require('body-parser');
|
||||
const session = require('express-session');
|
||||
const flash = require('connect-flash');
|
||||
const methodOverride = require('method-override');
|
||||
const expressLayouts = require('express-ejs-layouts');
|
||||
|
||||
// Importation des modules personnalisés
|
||||
const mailServer = require('./mail-server');
|
||||
const apiRoutes = require('./routes/api');
|
||||
const webRoutes = require('./routes/web');
|
||||
const database = require('./db/database');
|
||||
|
||||
// Initialisation de la base de données
|
||||
database.init();
|
||||
|
||||
// Création de l'application Express
|
||||
const app = express();
|
||||
const port = config.get('server.port') || 3000;
|
||||
|
||||
// Configuration des vues
|
||||
app.set('view engine', 'ejs');
|
||||
app.set('views', path.join(__dirname, '../views'));
|
||||
app.use(expressLayouts);
|
||||
app.set('layout', 'layouts/main');
|
||||
app.set('layout extractScripts', true);
|
||||
app.set('layout extractStyles', true);
|
||||
|
||||
// Middleware
|
||||
app.use(express.static(path.join(__dirname, '../public')));
|
||||
app.use(bodyParser.urlencoded({ extended: false }));
|
||||
app.use(bodyParser.json());
|
||||
app.use(methodOverride('_method'));
|
||||
app.use(session({
|
||||
secret: config.get('server.sessionSecret'),
|
||||
resave: false,
|
||||
saveUninitialized: false
|
||||
}));
|
||||
app.use(flash());
|
||||
|
||||
// Variables globales pour les templates
|
||||
app.use((req, res, next) => {
|
||||
res.locals.success_msg = req.flash('success_msg');
|
||||
res.locals.error_msg = req.flash('error_msg');
|
||||
res.locals.error = req.flash('error');
|
||||
next();
|
||||
});
|
||||
|
||||
// Routes
|
||||
app.use('/api', apiRoutes);
|
||||
app.use('/', webRoutes);
|
||||
|
||||
// Démarrage du serveur HTTP
|
||||
app.listen(port, () => {
|
||||
console.log(`Serveur web démarré sur le port ${port}`);
|
||||
});
|
||||
|
||||
// Démarrage du serveur SMTP
|
||||
mailServer.start();
|
||||
|
||||
// Gestion des erreurs non capturées
|
||||
process.on('unhandledRejection', (reason, promise) => {
|
||||
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
||||
});
|
||||
|
||||
process.on('uncaughtException', (err) => {
|
||||
console.error('Uncaught Exception:', err);
|
||||
|
||||
// En production, on pourrait vouloir redémarrer proprement le serveur ici
|
||||
// mais pour le développement, on laisse le processus se terminer
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
// Fermeture propre des serveurs
|
||||
mailServer.stop();
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = app;
|
||||
Reference in New Issue
Block a user