main.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import express from 'express';
  2. import expressWs from 'express-ws';
  3. import dotenv from 'dotenv';
  4. import cookieParser from 'cookie-parser';
  5. import Logs from './libs/logs.js';
  6. import gamesRoutes from './routes/games.js';
  7. import localesRoutes from './routes/locales.js';
  8. import platformsRoutes from './routes/platforms.js';
  9. const app = express();
  10. const wsInstance = expressWs(app);
  11. dotenv.config();
  12. // 添加 CORS 支持.env
  13. app.use((req, res, next) => {
  14. res.header('Access-Control-Allow-Origin', '*');
  15. res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
  16. res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  17. if (req.method === 'OPTIONS') {
  18. return res.sendStatus(200);
  19. }
  20. next();
  21. });
  22. // 中间件
  23. app.use(express.json({ limit: '10mb' }));
  24. app.use(cookieParser());
  25. app.use((req, res, next) => {
  26. res.badRequest = (data, msg) => {
  27. if (!msg && typeof data === 'string') {
  28. msg = data;
  29. data = undefined;
  30. }
  31. return res.status(400).json({ statusCode: 400, code: -1, message: msg ?? 'Bad Request', data });
  32. }
  33. res.unauthorized = (data,msg) => {
  34. if (!msg && typeof data === 'string') {
  35. msg = data;
  36. data = undefined;
  37. }
  38. return res.status(401).json({ statusCode: 401, code: -1, message: msg ?? 'Unauthorized', data });
  39. }
  40. res.notFound = (data,msg) => {
  41. if (!msg && typeof data === 'string') {
  42. msg = data;
  43. data = undefined;
  44. }
  45. return res.status(404).json({ statusCode: 404, code: -1, message: msg ?? 'Not Found', data });
  46. }
  47. res.serverError = (data,msg) => {
  48. if (!msg && typeof data === 'string') {
  49. msg = data;
  50. data = undefined;
  51. }
  52. return res.status(500).json({ statusCode: 500, code: -1, message: msg ?? 'Internal Server Error', data });
  53. }
  54. res.sendSuccess = (data, msg) => {
  55. const response = { statusCode: 200, code: 0, message: msg ?? 'OK' }
  56. if (data) {
  57. response.data = data;
  58. }
  59. return res.status(200).json(response);
  60. }
  61. res.sendError = (err) => {
  62. if (err.cause == 400) {
  63. return res.badRequest(err.data, err.message);
  64. }
  65. else {
  66. return res.serverError(err.data, err.message);
  67. }
  68. }
  69. next();
  70. });
  71. app.use('/api/games', gamesRoutes);
  72. app.use('/api/locales', localesRoutes);
  73. app.use('/api/platforms', platformsRoutes);
  74. // 启动服务
  75. const PORT = process.env.PORT || 9020;
  76. app.listen(PORT, () => Logs.out(`Server running on port ${PORT}`));