Spaces:
Sleeping
Sleeping
File size: 1,376 Bytes
4c025e9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
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);
}); |