63 lines
2.0 KiB
TypeScript
63 lines
2.0 KiB
TypeScript
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);
|
||
});
|