require('dotenv').config(); const express = require('express'); const cors = require('cors'); const helmet = require('helmet'); const morgan = require('morgan'); const { pool } = require('./config/db'); // 添加这行导入 const routes = require('./routes'); const errorHandler = require('./middlewares/error'); const app = express(); // 中间件 app.use(cors()); app.use(helmet()); app.use(morgan('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(cors({ origin: process.env.FRONTEND_URL || 'http://localhost:5173', // 假设 Vue 运行在 5173 methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'], allowedHeaders: ['Content-Type', 'Authorization'] })); // 测试数据库连接的路由 app.get('/test-db', async (req, res) => { try { const [rows] = await pool.query('SELECT 1 + 1 AS result'); res.json({ success: true, data: rows[0], message: '数据库连接正常' }); } catch (error) { console.error('数据库连接测试失败:', error); res.status(500).json({ success: false, error: error.message, code: error.code, // 添加数据库错误代码 stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }); } }); // 注册路由 app.use('/api', routes); // 错误处理中间件(必须放在所有路由之后) app.use(errorHandler); // 404 处理 app.use((req, res) => { res.status(404).json({ success: false, error: 'Endpoint not found' }); }); // 启动服务器 const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); console.log(`测试数据库连接: http://localhost:${PORT}/test-db`); }); module.exports = app;