import express, { Express } from 'express' import hookInitialize from './api/hookInitialize' // -------------------------- 日志记录 ----------------------- const winston = require('winston') const DailyRotateFile = require('winston-daily-rotate-file') const util = require('util') const logger = winston.createLogger({ // 创建一个 Logger 实例 level: 'info', // 设置日志级别 format: winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), // 添加时间戳 winston.format.printf(({ timestamp, level, message }) => `${timestamp} - ${level}: ${message}`) // 格式化日志输出 ), // 设置日志格式 transports: [ new winston.transports.Console(), // 添加控制台输出 new DailyRotateFile({ dirname: './logs', // 设置日志文件存放目录 filename: 'app-%DATE%.log', // 设置日志文件名,%DATE% 表示动态日期(例如:app-2022-01-01.log) datePattern: 'YYYY-MM-DD', // 设置日期格式 zippedArchive: false, // 启用压缩归档(默认为 false) maxSize: '20m', // 设置单个日志文件大小的限制 maxFiles: '5d' // 设置日志文件保留时间 }) ] }) // 将 console.log 重定向到 Winston Logger console.log = (...args): void => { const message = util.format(...args) logger.info(message) } console.error = (...args): void => { const message = util.format(...args) logger.error(message) } import cors from 'cors' const bodyParser = require('body-parser') // 引入路由 import indexRoutes from './routes/index' import wxWorkRoutes from './routes/wxWorkRoutes' import initializer from './initializer' class LocalServer { private server: Express | null = null constructor(private port: number) {} startServer(): void { const expressApp = express() // expressApp.use(cors() ) // cors 中间件,允许所有源访问 // 只允许特定的源进行访问 const corsOptions = { origin: ['http://localhost:5173', 'http://127.0.0.1:5173'] // 允许的源 // methods: 'GET,HEAD,PUT,PATCH,POST,DELETE', // 允许的 HTTP 方法 // optionsSuccessStatus: 204 // 对预检请求的响应状态码 } expressApp.use(cors(corsOptions)) // bodyParser.urlencoded() 用于处理表单提交等 URL 编码数据,而 bodyParser.json() 用于处理 API 请求等 JSON 数据。 expressApp.use(bodyParser.urlencoded({ extended: false })) // 解析通过 URL 编码方式传递的请求体数据, 附加到 req.body 属性 expressApp.use(bodyParser.json()) // 解析通过 JSON 格式传递的请求体数据, 附加到 req.body 属性 // 使用路由 expressApp.use('/', indexRoutes) expressApp.use('/wxWork', wxWorkRoutes) initializer.start() this.server = expressApp.listen(this.port, () => { console.log(`Server is running on port ${this.port}`) }) } closeServer(): void { if (this.server) { hookInitialize.killProcess() this.server.close(() => { console.log(`Server on port ${this.port} is closed`) }) } } } export default LocalServer