From dec3170524be920b181ab9d657a6225a42cc7027 Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 4 Mar 2025 10:01:55 +0800 Subject: [PATCH] core: fix load --- packages/hydrooj/src/entry/worker.ts | 5 +++++ packages/hydrooj/src/loader.ts | 15 +++++++++++---- packages/hydrooj/src/service/server.ts | 6 ++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/packages/hydrooj/src/entry/worker.ts b/packages/hydrooj/src/entry/worker.ts index 95c64fca4..5f757bd87 100644 --- a/packages/hydrooj/src/entry/worker.ts +++ b/packages/hydrooj/src/entry/worker.ts @@ -42,6 +42,11 @@ export async function apply(ctx: Context) { ctx.plugin(require('../service/hmr').default, { watch: argv.options.watch }); await require('../service/worker').apply(ctx); await require('../service/server').apply(ctx); + ctx = await new Promise((resolve) => { + ctx.inject(['server'], (c) => { + resolve(c); + }); + }); await require('../service/api').apply(ctx); require('../lib/index'); await lib(pending, fail, ctx); diff --git a/packages/hydrooj/src/loader.ts b/packages/hydrooj/src/loader.ts index 74d8e407d..f8d31f0c0 100644 --- a/packages/hydrooj/src/loader.ts +++ b/packages/hydrooj/src/loader.ts @@ -138,9 +138,16 @@ export class Loader extends Service { } app.plugin(I18n); -app.plugin(Loader); -function preload() { +async function preload() { + global.app = await new Promise((resolve) => { + app.inject(['timer', 'i18n', 'logger'], (c) => { + c.plugin(Loader); + c.inject(['loader'], (ctx) => { + resolve(ctx); + }); + }); + }) for (const a of [path.resolve(__dirname, '..'), ...getAddons()]) { try { // Is a npm package @@ -160,7 +167,7 @@ function preload() { } export async function load() { - preload(); + await preload(); Error.stackTraceLimit = 50; try { const { simpleGit } = require('simple-git') as typeof import('simple-git'); @@ -199,7 +206,7 @@ export async function load() { export async function loadCli() { process.env.HYDRO_CLI = 'true'; - preload(); + await preload(); await require('./entry/cli').load(app); setTimeout(() => process.exit(0), 300); } diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 6c01a9882..e0878dca1 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -5,7 +5,9 @@ import proxy from 'koa-proxies'; import cache from 'koa-static-cache'; import { type FindCursor, ObjectId } from 'mongodb'; import { - ConnectionHandler as ConnectionHandlerOriginal, Handler as HandlerOriginal, HydroError, NotFoundError, UserFacingError, + ConnectionHandler as ConnectionHandlerOriginal, + Handler as HandlerOriginal, HydroError, NotFoundError, UserFacingError, + WebService, } from '@hydrooj/framework'; import { errorMessage, Time } from '@hydrooj/utils'; import { Context } from '../context'; @@ -130,7 +132,7 @@ export class ConnectionHandler extends ConnectionHandlerOriginal { } export async function apply(ctx: Context) { - ctx.plugin(require('@hydrooj/framework'), { + ctx.plugin(WebService, { keys: system.get('session.keys'), proxy: !!system.get('server.xproxy') || !!system.get('server.xff'), cors: system.get('server.cors') || '',