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.
This commit is contained in:
Kasper Fabricius Kristensen authored and GitHub committed 2023-11-14 20:48:10 +00:00
1 parent 7226f5b699
commit 52800710a2
3 files changed
+11 -7

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
---
"@medusajs/medusa": patch
---
fix(medusa): Ensure that errorHandler middleware is applied if no middleware config exists
@@ -653,12 +653,7 @@ export class RoutesLoader {
*/ */
applyErrorHandlerMiddleware(): void { applyErrorHandlerMiddleware(): void {
const middlewareDescriptor = this.globalMiddlewaresDescriptor const middlewareDescriptor = this.globalMiddlewaresDescriptor
const errorHandlerFn = middlewareDescriptor?.config?.errorHandler
if (!middlewareDescriptor) {
return
}
const errorHandlerFn = middlewareDescriptor.config?.errorHandler
/** /**
* If the user has opted out of the error handler then return * If the user has opted out of the error handler then return
@@ -740,6 +735,10 @@ export class RoutesLoader {
*/ */
for (const route of routes) { for (const route of routes) {
if (!route.middlewares || !route.middlewares.length) {
continue
}
const methods = ( const methods = (
Array.isArray(route.method) ? route.method : [route.method] Array.isArray(route.method) ? route.method : [route.method]
).filter(Boolean) as MiddlewareVerb[] ).filter(Boolean) as MiddlewareVerb[]
@@ -65,7 +65,7 @@ export type MiddlewareRoute = {
method?: MiddlewareVerb | MiddlewareVerb[] method?: MiddlewareVerb | MiddlewareVerb[]
matcher: string | RegExp matcher: string | RegExp
bodyParser?: ParserConfig bodyParser?: ParserConfig
middlewares: MiddlewareFunction[] middlewares?: MiddlewareFunction[]
} }
export type MiddlewaresConfig = { export type MiddlewaresConfig = {