import express from 'express'; import expressWs from 'express-ws'; import dotenv from 'dotenv'; import cookieParser from 'cookie-parser'; import Logs from './libs/logs.js'; import gamesRoutes from './routes/games.js'; import localesRoutes from './routes/locales.js'; import platformsRoutes from './routes/platforms.js'; import partnerGateRoutes from './routes/partnerGate.js'; const app = express(); const wsInstance = expressWs(app); dotenv.config(); // 添加 CORS 支持.env app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization'); res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); if (req.method === 'OPTIONS') { return res.sendStatus(200); } next(); }); // 中间件 app.use(express.json({ limit: '10mb' })); app.use(cookieParser()); app.use((req, res, next) => { res.badRequest = (data, msg) => { if (!msg && typeof data === 'string') { msg = data; data = undefined; } return res.status(400).json({ statusCode: 400, code: -1, message: msg ?? 'Bad Request', data }); } res.unauthorized = (data, msg) => { if (!msg && typeof data === 'string') { msg = data; data = undefined; } return res.status(401).json({ statusCode: 401, code: -1, message: msg ?? 'Unauthorized', data }); } res.notFound = (data, msg) => { if (!msg && typeof data === 'string') { msg = data; data = undefined; } return res.status(404).json({ statusCode: 404, code: -1, message: msg ?? 'Not Found', data }); } res.serverError = (data, msg) => { if (!msg && typeof data === 'string') { msg = data; data = undefined; } return res.status(500).json({ statusCode: 500, code: -1, message: msg ?? 'Internal Server Error', data }); } res.sendSuccess = (data, msg) => { const response = { statusCode: 200, code: 0, message: msg ?? 'OK' } if (data) { response.data = data; } return res.status(200).json(response); } res.sendError = (err) => { if (err.cause == 400) { return res.badRequest(err.data, err.message); } else if (err.cause == 401) { return res.unauthorized(err.data, err.message); } else if (err.cause == 404) { return res.notFound(err.data, err.message); } else { return res.serverError(err.data, err.message); } } next(); }); app.use('/api/games', gamesRoutes); app.use('/api/locales', localesRoutes); app.use('/api/platforms', platformsRoutes); app.use('/api/partner', partnerGateRoutes); // 启动服务 const PORT = process.env.PORT || 9020; app.listen(PORT, () => Logs.out(`Server running on port ${PORT}`));