const express = require('express'); const dotenv = require('dotenv'); const cors = require('cors'); const morgan = require('morgan'); const { connectDB } = require('./config/db'); const { errorHandler } = require('./middleware/errorHandler'); const routes = require('./routes'); const logger = require('./utils/logger'); // 加载环境变量 dotenv.config(); // 初始化 Express 应用 const app = express(); // 中间件 app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); // 日志中间件 if (process.env.NODE_ENV === 'development') { app.use(morgan('dev')); } // 连接数据库 connectDB(); // 路由 app.use('/api', routes); // 健康检查端点 app.get('/health', (req, res) => { res.status(200).json({ status: 'ok', message: 'Server is running' }); }); // 错误处理中间件 app.use(errorHandler); // 启动服务器 const PORT = process.env.PORT || 8080; app.listen(PORT, () => { logger.info(`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`); }); // 处理未捕获的异常 process.on('uncaughtException', (err) => { logger.error('Uncaught Exception:', err); process.exit(1); }); // 处理未处理的 Promise 拒绝 process.on('unhandledRejection', (err) => { logger.error('Unhandled Rejection:', err); process.exit(1); });