45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import express from 'express';
|
|
import cors from 'cors';
|
|
import dotenv from 'dotenv';
|
|
import { logger, stream } from './config/logger.js';
|
|
import { requestLogger } from './middleware/logging/requestLogger.js';
|
|
import { errorLogger } from './middleware/error/errorLogger.js';
|
|
import authRoutes from './routes/auth/index.js';
|
|
import articleRoutes from './routes/articles/index.js';
|
|
import userRoutes from './routes/users/index.js';
|
|
|
|
// Load environment variables
|
|
dotenv.config();
|
|
|
|
const app = express();
|
|
|
|
// Middleware
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
app.use(requestLogger);
|
|
|
|
// Routes
|
|
app.use('/api/auth', authRoutes);
|
|
app.use('/api/articles', articleRoutes);
|
|
app.use('/api/users', userRoutes);
|
|
|
|
// Error handling
|
|
app.use(errorLogger);
|
|
|
|
const PORT = process.env.PORT || 5000;
|
|
|
|
app.listen(PORT, () => {
|
|
logger.info(`Server running on port ${PORT}`);
|
|
});
|
|
|
|
// Handle uncaught exceptions
|
|
process.on('uncaughtException', (error) => {
|
|
logger.error('Uncaught Exception:', error);
|
|
process.exit(1);
|
|
});
|
|
|
|
// Handle unhandled promise rejections
|
|
process.on('unhandledRejection', (reason, promise) => {
|
|
logger.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
process.exit(1);
|
|
}); |