From 4ad66c1795af2b5e9f0a0e958447b688e525651a Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Fri, 10 Nov 2023 08:51:55 +0100 Subject: [PATCH] fix(medusa): Load legacy modules entities (#5594) --- .changeset/chatty-readers-destroy.md | 5 +++++ packages/medusa/src/loaders/index.ts | 33 ++++++++++++++++++---------- 2 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 .changeset/chatty-readers-destroy.md diff --git a/.changeset/chatty-readers-destroy.md b/.changeset/chatty-readers-destroy.md new file mode 100644 index 0000000000..417ef3705d --- /dev/null +++ b/.changeset/chatty-readers-destroy.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +fix(medusa): Load legacy modules entities diff --git a/packages/medusa/src/loaders/index.ts b/packages/medusa/src/loaders/index.ts index 5fa4c39002..3dda60962d 100644 --- a/packages/medusa/src/loaders/index.ts +++ b/packages/medusa/src/loaders/index.ts @@ -8,7 +8,7 @@ import { Express, NextFunction, Request, Response } from "express" import databaseLoader, { dataSource } from "./database" import pluginsLoader, { registerPluginModels } from "./plugins" -import { ContainerRegistrationKeys } from "@medusajs/utils" +import { ContainerRegistrationKeys, isString } from "@medusajs/utils" import { asValue } from "awilix" import { createMedusaContainer } from "medusa-core-utils" import { track } from "medusa-telemetry" @@ -40,6 +40,8 @@ type Options = { } async function loadLegacyModulesEntities(configModules, container) { + const logger = container.resolve(ContainerRegistrationKeys.LOGGER) + for (const [moduleName, moduleConfig] of Object.entries(configModules)) { const definition = ModulesDefinition[moduleName] @@ -47,16 +49,25 @@ async function loadLegacyModulesEntities(configModules, container) { continue } - if ( - (moduleConfig as InternalModuleDeclaration).resources === - MODULE_RESOURCE_TYPE.SHARED || - (definition.defaultModuleDeclaration as InternalModuleDeclaration) - .resources === MODULE_RESOURCE_TYPE.SHARED - ) { - const module = await import( - (moduleConfig as InternalModuleDeclaration).resolve ?? - (definition.defaultPackage as string) - ) + let modulePath = isString(moduleConfig) + ? moduleConfig + : (moduleConfig as InternalModuleDeclaration).resolve ?? + (definition.defaultPackage as string) + + const resources = isString(moduleConfig) + ? (definition.defaultModuleDeclaration as InternalModuleDeclaration) + .resources + : (moduleConfig as InternalModuleDeclaration).resources ?? + (definition.defaultModuleDeclaration as InternalModuleDeclaration) + .resources + + if (resources === MODULE_RESOURCE_TYPE.SHARED) { + if (!modulePath) { + logger.warn(`Unable to load module entities for ${moduleName}`) + continue + } + + const module = await import(modulePath) if (module.default?.models) { module.default.models.map((model) =>