From 52800710a294e32ebda6ba8a224fe85d289bfa0f Mon Sep 17 00:00:00 2001 From: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> Date: Tue, 14 Nov 2023 21:48:10 +0100 Subject: [PATCH] fix(medusa): Error handling middleware should be applied when no config is exported (#5634) **What** - Fixes an issue where the default errorHandler middleware was not applied if the user did not have a `middlewares.ts` file. - Updates the type of `MiddlewaresConfig` so `middlewares` is now optional, as people might want to only set a bodyParser config for a matcher and not provide any additional middleware. --- .changeset/smooth-baboons-repeat.md | 5 +++++ packages/medusa/src/loaders/helpers/routing/index.ts | 11 +++++------ packages/medusa/src/loaders/helpers/routing/types.ts | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 .changeset/smooth-baboons-repeat.md diff --git a/.changeset/smooth-baboons-repeat.md b/.changeset/smooth-baboons-repeat.md new file mode 100644 index 0000000000..6cd6e44ac1 --- /dev/null +++ b/.changeset/smooth-baboons-repeat.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +fix(medusa): Ensure that errorHandler middleware is applied if no middleware config exists diff --git a/packages/medusa/src/loaders/helpers/routing/index.ts b/packages/medusa/src/loaders/helpers/routing/index.ts index fc3dd89b4f..3dd53092d0 100644 --- a/packages/medusa/src/loaders/helpers/routing/index.ts +++ b/packages/medusa/src/loaders/helpers/routing/index.ts @@ -653,12 +653,7 @@ export class RoutesLoader { */ applyErrorHandlerMiddleware(): void { const middlewareDescriptor = this.globalMiddlewaresDescriptor - - if (!middlewareDescriptor) { - return - } - - const errorHandlerFn = middlewareDescriptor.config?.errorHandler + const errorHandlerFn = middlewareDescriptor?.config?.errorHandler /** * If the user has opted out of the error handler then return @@ -740,6 +735,10 @@ export class RoutesLoader { */ for (const route of routes) { + if (!route.middlewares || !route.middlewares.length) { + continue + } + const methods = ( Array.isArray(route.method) ? route.method : [route.method] ).filter(Boolean) as MiddlewareVerb[] diff --git a/packages/medusa/src/loaders/helpers/routing/types.ts b/packages/medusa/src/loaders/helpers/routing/types.ts index 3a71c2fba1..d5521f9009 100644 --- a/packages/medusa/src/loaders/helpers/routing/types.ts +++ b/packages/medusa/src/loaders/helpers/routing/types.ts @@ -65,7 +65,7 @@ export type MiddlewareRoute = { method?: MiddlewareVerb | MiddlewareVerb[] matcher: string | RegExp bodyParser?: ParserConfig - middlewares: MiddlewareFunction[] + middlewares?: MiddlewareFunction[] } export type MiddlewaresConfig = {