From 137dd036bde70a0f0c6a7ed98596da7c17b4a188 Mon Sep 17 00:00:00 2001 From: Harry Chen Date: Tue, 11 Aug 2020 14:11:36 +0800 Subject: [PATCH] fix: fix global middleware load order (#594) --- packages/faas/src/configuration.ts | 12 ++---------- packages/faas/src/starter.ts | 15 ++++++++++----- .../base-app-middleware/src/configuration.ts | 6 +++++- .../fixtures/base-app-middleware/src/mw/test.ts | 6 +++++- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/packages/faas/src/configuration.ts b/packages/faas/src/configuration.ts index 709cd2c3ecfa..92173842470a 100644 --- a/packages/faas/src/configuration.ts +++ b/packages/faas/src/configuration.ts @@ -1,4 +1,4 @@ -import { Configuration, App, Config } from '@midwayjs/decorator'; +import { Configuration, App } from '@midwayjs/decorator'; import { ILifeCycle } from '@midwayjs/core'; import { IFaaSApplication } from './interface'; @@ -9,13 +9,5 @@ export class FaaSContainerConfiguration implements ILifeCycle { @App() app: IFaaSApplication; - @Config('middleware') - middleware: string[]; - - async onReady() { - // add middleware from user config - if (this.app?.use && this.middleware?.length) { - await this.app.useMiddleware(this.middleware); - } - } + async onReady() {} } diff --git a/packages/faas/src/starter.ts b/packages/faas/src/starter.ts index 35db002910a8..b96287e95087 100644 --- a/packages/faas/src/starter.ts +++ b/packages/faas/src/starter.ts @@ -234,12 +234,15 @@ export class FaaSStarter implements IFaaSStarter { this.registerDecorator(); await this.loader.refresh(); - // merge app middleware to global - if (this.webApplication?.['middleware']?.length) { + // attach global middleawre from user config + if (this.webApplication?.use) { + const middlewares = this.webApplication.getConfig('middleware') || []; + await this.webApplication.useMiddleware(middlewares); this.globalMiddleware = this.globalMiddleware.concat( this.webApplication['middleware'] ); } + // set app keys this.webApplication['keys'] = this.webApplication.getConfig('keys') || ''; @@ -349,9 +352,11 @@ export class FaaSStarter implements IFaaSStarter { }, useMiddleware: async middlewares => { - const newMiddlewares = await this.loadMiddleware(middlewares); - for (const mw of newMiddlewares) { - this.webApplication.use(mw); + if (middlewares.length) { + const newMiddlewares = await this.loadMiddleware(middlewares); + for (const mw of newMiddlewares) { + this.webApplication.use(mw); + } } }, }); diff --git a/packages/faas/test/fixtures/base-app-middleware/src/configuration.ts b/packages/faas/test/fixtures/base-app-middleware/src/configuration.ts index 97b6bccd93c4..0247e85efa39 100644 --- a/packages/faas/test/fixtures/base-app-middleware/src/configuration.ts +++ b/packages/faas/test/fixtures/base-app-middleware/src/configuration.ts @@ -3,4 +3,8 @@ import { Configuration } from '@midwayjs/decorator'; @Configuration({ importConfigs: ['./config.default'], }) -export class AutoConfiguraion {} +export class AutoConfiguraion { + async onReady(container) { + container.registerObject('adb', { data: '123' }); + } +} diff --git a/packages/faas/test/fixtures/base-app-middleware/src/mw/test.ts b/packages/faas/test/fixtures/base-app-middleware/src/mw/test.ts index 691d7c1d2a42..1d6b0f82a4e7 100644 --- a/packages/faas/test/fixtures/base-app-middleware/src/mw/test.ts +++ b/packages/faas/test/fixtures/base-app-middleware/src/mw/test.ts @@ -1,10 +1,14 @@ -import { Provide } from '@midwayjs/decorator'; +import { Provide, Inject } from '@midwayjs/decorator'; import * as assert from 'assert'; @Provide() export class TestMiddleware { + @Inject() + adb: any; + resolve() { return async (ctx, next) => { + assert(this.adb); assert(ctx.logger); ctx.requestId = 555; await next();