63 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import express from 'express';
import cors from 'cors';
import dotenv from 'dotenv';
import morgan from 'morgan';
import { logger, stream } from './config/logger';
import { requestLogger } from './middleware/logging/requestLogger';
import { errorLogger } from './middleware/error/errorLogger';
import authRoutes from './routes/auth/index';
import userRoutes from './routes/users/index';
import articleRoutes from './routes/articles/index';
import galleryRoutes from './routes/gallery/index';
import imagesRoutes from './routes/images/index';
import authorRoutes from './routes/authors/index';
import otherRoutes from './routes/other/index';
import announcementRoutes from './routes/announcements/index';
const app = express();
// Загрузка переменных окружения
dotenv.config();
const PORT = process.env.PORT || 5000;
// Используем Morgan с кастомным логированием через Winston
app.use(morgan('combined', { stream }));
// Middleware для обработки JSON
app.use(cors());
app.use(express.json());
app.use(requestLogger);
// Обработка ошибок
app.use(errorLogger);
// Маршруты
app.use('/api/auth', authRoutes);
app.use('/api/users', userRoutes);
app.use('/api/authors', authorRoutes);
app.use('/api/articles', articleRoutes);
app.use('/api/gallery', galleryRoutes);
app.use('/api/images', imagesRoutes);
app.use('/api/other', otherRoutes);
app.use('/api/announcements', announcementRoutes);
// Запуск сервера
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
logger.info(`Server running on port ${PORT}`);
});
// Обработка не перехваченных исключений
process.on('uncaughtException', (error) => {
logger.error('Uncaught Exception:', error);
process.exit(1);
});
// Обработка не обработанных promise rejections
process.on('unhandledRejection', (reason, promise) => {
logger.error('Unhandled Rejection at:', promise, 'reason:', reason);
process.exit(1);
});