- Split Module and Module Links to their own chapters - Add new docs on db operations and transactions in modules, multiple services, links with custom columns, etc... - Added a list of registered dependencies in a module container
69 lines
1.7 KiB
Plaintext
69 lines
1.7 KiB
Plaintext
export const metadata = {
|
|
title: `${pageNumber} Module's Container`,
|
|
}
|
|
|
|
# {metadata.title}
|
|
|
|
In this chapter, you'll learn about the module's container and how to resolve resources in that container.
|
|
|
|
## Module's Container
|
|
|
|
Since modules are isolated, each module has a local container only used by the resources of that module.
|
|
|
|
So, resources in the module, such as services or loaders, can only resolve other resources registered in the module's container.
|
|
|
|
### List of Registered Resources
|
|
|
|
Find a list of resources or dependencies registered in a module's container in [this Learning Resources reference](!resoures!/medusa-container-resources).
|
|
|
|
---
|
|
|
|
## Resolve Resources
|
|
|
|
### Services
|
|
|
|
A service's constructor accepts as a first parameter an object used to resolve resources registered in the module's container.
|
|
|
|
For example:
|
|
|
|
```ts highlights={[["4"], ["10"]]}
|
|
import { Logger } from "@medusajs/medusa"
|
|
|
|
type InjectedDependencies = {
|
|
logger: Logger
|
|
}
|
|
|
|
export default class HelloModuleService {
|
|
protected logger_: Logger
|
|
|
|
constructor({ logger }: InjectedDependencies) {
|
|
this.logger_ = logger
|
|
|
|
this.logger_.info("[HelloModuleService]: Hello World!")
|
|
}
|
|
|
|
// ...
|
|
}
|
|
```
|
|
|
|
### Loader
|
|
|
|
A loader function accepts as a parameter an object having the property `container`. Its value is the module's container used to resolve resources.
|
|
|
|
For example:
|
|
|
|
```ts highlights={[["9"]]}
|
|
import {
|
|
LoaderOptions,
|
|
} from "@medusajs/framework/modules-sdk"
|
|
import { Logger } from "@medusajs/medusa"
|
|
|
|
export default async function helloWorldLoader({
|
|
container,
|
|
}: LoaderOptions) {
|
|
const logger: Logger = container.resolve("logger")
|
|
|
|
logger.info("[helloWorldLoader]: Hello, World!")
|
|
}
|
|
```
|