app.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import Koa from 'koa';
  2. import bodyParser from 'koa-bodyparser';
  3. import serve from 'koa-static';
  4. import path from 'path';
  5. import { fileURLToPath } from 'url';
  6. import config from './config/index.js';
  7. import { decryptUrlMiddle } from './util/crypto/index.js';
  8. import { stringUtils } from './util/stringClass.js';
  9. import commonRouter from './api/common/routes.js';
  10. import mpsRouter from './api/mps/routes.js';
  11. import phonicsRouter from './api/phonics/routes.js';
  12. import pinyinRouter from './api/pinyin/routes.js';
  13. import hanziRouter from './api/hanzi/routes.js';
  14. import webRouter from './api/web/routes.js';
  15. const __dirname = path.dirname(fileURLToPath(import.meta.url));
  16. const app = new Koa();
  17. // 使用中间件
  18. app.use(bodyParser());
  19. // 静态文件服务
  20. app.use(serve(__dirname + '/../public'));
  21. // 错误处理
  22. app.use(async (ctx, next) => {
  23. try {
  24. await next();
  25. } catch (err) {
  26. ctx.status = err.status || 500;
  27. ctx.body = {
  28. error: err.message,
  29. url: ctx.url
  30. };
  31. console.log("error_url:"+ctx.url);
  32. ctx.app.emit('error', err, ctx);
  33. }
  34. });
  35. app.use(decryptUrlMiddle());
  36. // 注册路由
  37. app.use(commonRouter.routes());
  38. app.use(commonRouter.allowedMethods());
  39. app.use(mpsRouter.routes());
  40. app.use(mpsRouter.allowedMethods());
  41. app.use(phonicsRouter.routes());
  42. app.use(phonicsRouter.allowedMethods());
  43. app.use(pinyinRouter.routes());
  44. app.use(pinyinRouter.allowedMethods());
  45. app.use(hanziRouter.routes());
  46. app.use(hanziRouter.allowedMethods());
  47. app.use(webRouter.routes());
  48. app.use(webRouter.allowedMethods());
  49. // 启动服务器
  50. app.listen(config.port, () => {
  51. console.log('Server IP:', stringUtils.GetServerIP());
  52. console.log(`Server running on port ${config.port}`);
  53. });