chore(medusa, modules-sdk): default module error message (#3605)
* default module error message * changeset * unit test
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
"@medusajs/modules-sdk": patch
|
||||||
|
"@medusajs/medusa": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Improved error message if default module is not installed
|
||||||
@@ -94,6 +94,7 @@ export default async ({
|
|||||||
moduleResolutions: registerModules(configModule?.modules),
|
moduleResolutions: registerModules(configModule?.modules),
|
||||||
logger: Logger,
|
logger: Logger,
|
||||||
})
|
})
|
||||||
|
Logger.activity(`${EOL}`)
|
||||||
const modAct = Logger.success(modulesActivity, "Modules initialized") || {}
|
const modAct = Logger.success(modulesActivity, "Modules initialized") || {}
|
||||||
track("MODULES_INIT_COMPLETED", { duration: modAct.duration })
|
track("MODULES_INIT_COMPLETED", { duration: modAct.duration })
|
||||||
|
|
||||||
|
|||||||
@@ -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 () => {
|
it("throws error if no scope is defined to the module", async () => {
|
||||||
expect.assertions(1)
|
expect.assertions(1)
|
||||||
const moduleResolutions: Record<string, ModuleResolution> = {
|
const moduleResolutions: Record<string, ModuleResolution> = {
|
||||||
|
|||||||
@@ -26,6 +26,17 @@ export async function loadInternalModule(
|
|||||||
try {
|
try {
|
||||||
loadedModule = (await import(resolution.resolutionPath as string)).default
|
loadedModule = (await import(resolution.resolutionPath as string)).default
|
||||||
} catch (error) {
|
} 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 }
|
return { error }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user