12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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;
|