require('dotenv').config(); const express = require('express'); const cors = require('cors'); const bodyParser = require('body-parser'); const helmet = require('helmet'); const morgan = require('morgan'); const path = require('path'); const fs = require('fs'); // 创建Express应用 const app = express(); // 中间件 app.use(cors()); app.use(helmet()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // 日志配置 const accessLogStream = fs.createWriteStream( path.join(__dirname, 'logs', 'access.log'), { flags: 'a' } ); app.use(morgan('combined', { stream: accessLogStream })); // 数据库连接 const sequelize = require('./config/database'); // 路由 app.use('/api/auth', require('./routes/auth')); app.use('/api/supervision', require('./routes/supervision')); app.use('/api/approval', require('./routes/approval')); app.use('/api/personnel', require('./routes/personnel')); app.use('/api/warehouse', require('./routes/warehouse')); app.use('/api/epidemic', require('./routes/epidemic')); app.use('/api/service', require('./routes/service')); app.use('/api/visualization', require('./routes/visualization')); app.use('/api/system', require('./routes/system')); app.use('/api/files', require('./routes/files')); // 健康检查 app.get('/health', (req, res) => { res.json({ status: 'ok', timestamp: new Date() }); }); // 错误处理 app.use((err, req, res, next) => { console.error(err.stack); res.status(500).json({ code: 500, message: 'Internal Server Error', error: process.env.NODE_ENV === 'development' ? err.message : undefined }); }); // 启动服务器 const PORT = process.env.PORT || 5352; app.listen(PORT, () => { console.log(`政府管理系统后端服务已启动,端口: ${PORT}`); console.log(`数据库: ${process.env.DB_NAME}@${process.env.DB_HOST}:${process.env.DB_PORT}`); });