feat: serverConfiguration支持middleware配置

This commit is contained in:
Pan Qiancheng 2025-11-11 18:02:54 +08:00
parent f0671efef6
commit 896d53561e
2 changed files with 40 additions and 4 deletions

View File

@ -9,7 +9,7 @@ const path_1 = require("path");
const koa_1 = tslib_1.__importDefault(require("koa"));
const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
const koa_body_1 = tslib_1.__importDefault(require("koa-body"));
const koa_logger_1 = tslib_1.__importDefault(require("koa-logger"));
// import logger from 'koa-logger';
const oak_backend_base_1 = require("oak-backend-base");
const types_1 = require("oak-domain/lib/types");
const cluster_adapter_1 = require("@socket.io/cluster-adapter");
@ -63,7 +63,24 @@ async function startup(path, connector, omitWatchers, omitTimers, routine) {
const corsMethods = ['PUT', 'POST', 'GET', 'DELETE', 'OPTIONS'];
const koa = new koa_1.default();
// 使用 koa-logger 中间件打印日志
koa.use((0, koa_logger_1.default)());
// koa.use(logger());
// 注册自定义中间件
if (serverConfiguration.middleware) {
if (Array.isArray(serverConfiguration.middleware)) {
serverConfiguration.middleware.forEach((mw) => {
koa.use(mw);
});
}
else if (typeof serverConfiguration.middleware === 'function') {
const mws = serverConfiguration.middleware(koa);
if (!Array.isArray(mws)) {
throw new Error('middleware 配置函数必须返回 Koa.Middleware 数组');
}
mws.forEach((mw) => {
koa.use(mw);
});
}
}
// socket
const httpServer = (0, http_1.createServer)(koa.callback());
const socketPath = connector.getSocketPath();

View File

@ -5,7 +5,7 @@ import PathLib, { join } from 'path';
import Koa from 'koa';
import KoaRouter from 'koa-router';
import KoaBody from 'koa-body';
import logger from 'koa-logger';
// import logger from 'koa-logger';
import { AppLoader, getClusterInfo, ClusterAppLoader } from 'oak-backend-base';
import { BackendRuntimeContext } from 'oak-frontend-base/lib/context/BackendRuntimeContext';
@ -88,7 +88,26 @@ export async function startup<ED extends EntityDict & BaseEntityDict, FrontCxt e
const koa = new Koa();
// 使用 koa-logger 中间件打印日志
koa.use(logger());
// koa.use(logger());
// 注册自定义中间件
if (serverConfiguration.middleware) {
if (Array.isArray(serverConfiguration.middleware)) {
serverConfiguration.middleware.forEach((mw) => {
koa.use(mw);
});
}
else if (typeof serverConfiguration.middleware === 'function') {
const mws = serverConfiguration.middleware(koa);
if (!Array.isArray(mws)) {
throw new Error('middleware 配置函数必须返回 Koa.Middleware 数组');
}
mws.forEach((mw) => {
koa.use(mw);
});
}
}
// socket
const httpServer = createServer(koa.callback());
const socketPath = connector.getSocketPath();