fix: initiate request container before other express middleware (#12761)
This commit is contained in:
6
.changeset/tricky-plants-sell.md
Normal file
6
.changeset/tricky-plants-sell.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@medusajs/medusa": patch
|
||||
"@medusajs/framework": patch
|
||||
---
|
||||
|
||||
fix: fallback to console with req.scope is undefined
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user