chore(medusa, modules-sdk): default module error message (#3605)

* default module error message

* changeset

* unit test
This commit is contained in:
Carlos R. L. Rodrigues
2023-03-28 12:43:20 -03:00
committed by GitHub
parent 91f0e01d0f
commit bca1f80dd5
4 changed files with 50 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
---
"@medusajs/modules-sdk": patch
"@medusajs/medusa": patch
---
Improved error message if default module is not installed

View File

@@ -94,6 +94,7 @@ export default async ({
moduleResolutions: registerModules(configModule?.modules),
logger: Logger,
})
Logger.activity(`${EOL}`)
const modAct = Logger.success(modulesActivity, "Modules initialized") || {}
track("MODULES_INIT_COMPLETED", { duration: modAct.duration })

View File

@@ -190,6 +190,38 @@ describe("modules loader", () => {
}
})
it("throws error if default package isn't found and module is required", async () => {
expect.assertions(1)
const moduleResolutions: Record<string, ModuleResolution> = {
testService: {
resolutionPath: "@medusajs/testService",
definition: {
registrationName: "testService",
key: "testService",
defaultPackage: "@medusajs/testService",
label: "TestService",
isRequired: true,
defaultModuleDeclaration: {
scope: MODULE_SCOPE.INTERNAL,
resources: MODULE_RESOURCE_TYPE.SHARED,
},
},
moduleDeclaration: {
scope: MODULE_SCOPE.INTERNAL,
resources: MODULE_RESOURCE_TYPE.SHARED,
},
},
}
try {
await moduleLoader({ container, moduleResolutions, logger })
} catch (err) {
expect(err.message).toEqual(
`Make sure you have installed the default package: @medusajs/testService`
)
}
})
it("throws error if no scope is defined to the module", async () => {
expect.assertions(1)
const moduleResolutions: Record<string, ModuleResolution> = {

View File

@@ -26,6 +26,17 @@ export async function loadInternalModule(
try {
loadedModule = (await import(resolution.resolutionPath as string)).default
} catch (error) {
if (
resolution.definition.isRequired &&
resolution.definition.defaultPackage
) {
return {
error: new Error(
`Make sure you have installed the default package: ${resolution.definition.defaultPackage}`
),
}
}
return { error }
}