fix: initiate request container before other express middleware (#12761)

This commit is contained in:
Harminder Virk
2025-06-19 09:23:15 +02:00
committed by GitHub
parent ffa611b546
commit 94b62c6724
3 changed files with 23 additions and 7 deletions

View File

@@ -0,0 +1,6 @@
---
"@medusajs/medusa": patch
"@medusajs/framework": patch
---
fix: fallback to console with req.scope is undefined

View File

@@ -20,14 +20,20 @@ export function errorHandler() {
res: Response,
_: NextFunction
) {
const logger = req.scope.resolve(ContainerRegistrationKeys.LOGGER)
const logger = req.scope
? req.scope.resolve(ContainerRegistrationKeys.LOGGER)
: console
if (!req.scope) {
logger.error(
"req.scope is missing unexpectedly. It should be defined in all the cases"
)
}
err = formatException(err)
logger.error(err)
const errorType = err.type || err.name
const errObj = {
code: err.code,
type: err.type,

View File

@@ -89,10 +89,10 @@ async function loadEntrypoints(
return async () => {}
}
const { shutdown } = await expressLoader({
app: expressApp,
})
/**
* The scope and the ip address must be fetched before we execute any other
* middleware
*/
expressApp.use((req: Request, res: Response, next: NextFunction) => {
req.scope = container.createScope() as MedusaContainer
req.requestId = (req.headers["x-request-id"] as string) ?? v4()
@@ -108,6 +108,10 @@ async function loadEntrypoints(
next()
})
const { shutdown } = await expressLoader({
app: expressApp,
})
await adminLoader({ app: expressApp, configModule, rootDirectory, plugins })
await apiLoader({
container,