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(); // CORS 配置 const corsOptions = { origin: 'http://localhost:5173', credentials: true, methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Content-Type', 'Authorization', 'X-Requested-With'], optionsSuccessStatus: 200 }; // 中间件配置 app.use(cors(corsOptions)); // 只保留这一个 CORS 中间件 app.options('*', cors(corsOptions)); // 预检请求处理 app.use(helmet()); app.use(morgan('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: true })); // 测试路由 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 }); } }); // 路由注册 (关键修正点) // 注意:这里只需要使用 routes,不需要单独再挂载 jobsRouter // 因为 routes/index.js 应该已经整合了所有子路由 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;