chore(modules-sdk): throw when failing to load module (#7431)
This commit is contained in:
committed by
GitHub
parent
e3beaf5a29
commit
7b0cfe3b77
@@ -4,7 +4,6 @@ import {
|
|||||||
ModuleResolution,
|
ModuleResolution,
|
||||||
} from "@medusajs/types"
|
} from "@medusajs/types"
|
||||||
import { createMedusaContainer } from "@medusajs/utils"
|
import { createMedusaContainer } from "@medusajs/utils"
|
||||||
import { EOL } from "os"
|
|
||||||
import { moduleLoader } from "../module-loader"
|
import { moduleLoader } from "../module-loader"
|
||||||
|
|
||||||
const logger = {
|
const logger = {
|
||||||
@@ -114,11 +113,9 @@ describe("modules loader", () => {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
await moduleLoader({ container, moduleResolutions, logger })
|
expect(
|
||||||
|
moduleLoader({ container, moduleResolutions, logger })
|
||||||
expect(logger.warn).toHaveBeenCalledWith(
|
).rejects.toThrow("Loaders for module TestService failed: loader")
|
||||||
`Could not resolve module: TestService. Error: Loaders for module TestService failed: loader${EOL}`
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should log the errors if no service is defined", async () => {
|
it("should log the errors if no service is defined", async () => {
|
||||||
@@ -142,15 +139,14 @@ describe("modules loader", () => {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
await moduleLoader({ container, moduleResolutions, logger })
|
expect(
|
||||||
|
moduleLoader({ container, moduleResolutions, logger })
|
||||||
expect(logger.warn).toHaveBeenCalledWith(
|
).rejects.toThrow(
|
||||||
`Could not resolve module: TestService. Error: No service found in module. Make sure your module exports a service.${EOL}`
|
"No service found in module TestService. Make sure your module exports a service."
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should throw an error if no service is defined and the module is required", async () => {
|
it("should throw an error if no service is defined and the module is required", async () => {
|
||||||
expect.assertions(1)
|
|
||||||
const moduleResolutions: Record<string, ModuleResolution> = {
|
const moduleResolutions: Record<string, ModuleResolution> = {
|
||||||
testService: {
|
testService: {
|
||||||
resolutionPath: "@modules/no-service",
|
resolutionPath: "@modules/no-service",
|
||||||
@@ -172,13 +168,11 @@ describe("modules loader", () => {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
expect(
|
||||||
await moduleLoader({ container, moduleResolutions, logger })
|
moduleLoader({ container, moduleResolutions, logger })
|
||||||
} catch (err) {
|
).rejects.toThrow(
|
||||||
expect(err.message).toEqual(
|
"No service found in module TestService. Make sure your module exports a service."
|
||||||
"No service found in module. Make sure your module exports a service."
|
|
||||||
)
|
)
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should throw an error if the default package isn't found and the module is required", async () => {
|
it("should throw an error if the default package isn't found and the module is required", async () => {
|
||||||
|
|||||||
@@ -33,16 +33,10 @@ export const moduleLoader = async ({
|
|||||||
|
|
||||||
if (registrationResult?.error) {
|
if (registrationResult?.error) {
|
||||||
const { error } = registrationResult
|
const { error } = registrationResult
|
||||||
if (resolution.definition.isRequired) {
|
|
||||||
logger?.error(
|
logger?.error(
|
||||||
`Could not resolve required module: ${resolution.definition.label}. Error: ${error.message}${EOL}`
|
|
||||||
)
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
|
|
||||||
logger?.warn(
|
|
||||||
`Could not resolve module: ${resolution.definition.label}. Error: ${error.message}${EOL}`
|
`Could not resolve module: ${resolution.definition.label}. Error: ${error.message}${EOL}`
|
||||||
)
|
)
|
||||||
|
throw error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ import {
|
|||||||
ModulesSdkUtils,
|
ModulesSdkUtils,
|
||||||
} from "@medusajs/utils"
|
} from "@medusajs/utils"
|
||||||
import { asFunction, asValue } from "awilix"
|
import { asFunction, asValue } from "awilix"
|
||||||
import { join, resolve } from "path"
|
|
||||||
import { statSync } from "fs"
|
import { statSync } from "fs"
|
||||||
import { readdir } from "fs/promises"
|
import { readdir } from "fs/promises"
|
||||||
|
import { join, resolve } from "path"
|
||||||
|
|
||||||
type ModuleResource = {
|
type ModuleResource = {
|
||||||
services: Function[]
|
services: Function[]
|
||||||
@@ -90,7 +90,7 @@ export async function loadInternalModule(
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
error: new Error(
|
error: new Error(
|
||||||
"No service found in module. Make sure your module exports a service."
|
`No service found in module ${resolution?.definition?.label}. Make sure your module exports a service.`
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user