| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import Koa from 'koa';
- import bodyParser from 'koa-bodyparser';
- import serve from 'koa-static';
- import session from 'koa-session';
- 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 queryParamSanitizer from './middleware/queryParamSanitizer.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 mathcalculateRouter from './api/mathcalculate/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(queryParamSanitizer());
- // 静态文件服务
- 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.keys = ['some secret hurr'];
- const SessionConfig = {
- key: 'koa.sess', // cookie密钥
- maxAge: 86400000, // cookie的过期时间 maxAge in ms (default is 1 days)
- autoCommit: true, // 自动提交头部
- overwrite: true, // 是否允许重写
- httpOnly: true, // 是否允许js访问cookie
- signed: true, // 签名默认true
- rolling: true, // 每次请求强制设置cookie,重置cookie过期时间(默认:false)
- renew: true, // 当session快过期时更新session,以避免用户在操作时session过期
- secure: process.env.NODE_ENV === 'production', // 仅在HTTPS下发送cookie
- sameSite: 'lax', // 跨站点cookie设置,'strict'|'lax'|'none'
- };
- // 使用session中间件
- app.use(session(SessionConfig, app));
- //中间件
- 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(mathcalculateRouter.routes());
- app.use(mathcalculateRouter.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}`);
- });
|