import Koa from 'koa'; import bodyParser from 'koa-bodyparser'; import serve from 'koa-static'; import path from 'path'; import { fileURLToPath } from 'url'; import config from './config/index.js'; import { decryptUrlMiddle } from './util/crypto/index.js'; import { stringUtils } from './util/stringClass.js'; import commonRouter from './api/common/routes.js'; import mpsRouter from './api/mps/routes.js'; import phonicsRouter from './api/phonics/routes.js'; import pinyinRouter from './api/pinyin/routes.js'; import hanziRouter from './api/hanzi/routes.js'; import webRouter from './api/web/routes.js'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const app = new Koa(); // 使用中间件 app.use(bodyParser()); // 静态文件服务 app.use(serve(__dirname + '/../public')); // 错误处理 app.use(async (ctx, next) => { try { await next(); } catch (err) { ctx.status = err.status || 500; ctx.body = { error: err.message, url: ctx.url }; console.log("error_url:"+ctx.url); ctx.app.emit('error', err, ctx); } }); app.use(decryptUrlMiddle()); // 注册路由 app.use(commonRouter.routes()); app.use(commonRouter.allowedMethods()); app.use(mpsRouter.routes()); app.use(mpsRouter.allowedMethods()); app.use(phonicsRouter.routes()); app.use(phonicsRouter.allowedMethods()); app.use(pinyinRouter.routes()); app.use(pinyinRouter.allowedMethods()); app.use(hanziRouter.routes()); app.use(hanziRouter.allowedMethods()); app.use(webRouter.routes()); app.use(webRouter.allowedMethods()); // 启动服务器 app.listen(config.port, () => { console.log('Server IP:', stringUtils.GetServerIP()); console.log(`Server running on port ${config.port}`); });