Converts the module import function to a callable function. Invoking this method run internally import the module, create a new instance of the default export class using the container and invokes the method using the container.
You can create a callable function using the container instance as shown below
const fn = moduleImporter(() => import('#middleware/auth_middleware'), 'handle')
.toCallable(container)
// Call the function and pass context to it
await fn(ctx)
Another option is to not pass the container at the time of creating the callable function, but instead pass a resolver instance at the time of calling the function
const fn = moduleImporter(() => import('#middleware/auth_middleware'), 'handle')
.toCallable()
// Call the function and pass context to it
const resolver = container.createResolver()
await fn(resolver, ctx)
Optionalcontainer: TConverts the module import function to an object with handle method. Invoking the handle method run internally imports the module, create a new instance of the default export class using the container and invokes the method using the container.
You can create a handle method object using the container instance as shown below
const handler = moduleImporter(() => import('#middleware/auth_middleware'), 'handle')
.toHandleMethod(container)
// Call the function and pass context to it
await handler.handle(ctx)
Another option is to not pass the container at the time of creating the handle method object, but instead pass a resolver instance at the time of calling the function
const handler = moduleImporter(() => import('#middleware/auth_middleware'), 'handle')
.toHandleMethod()
// Call the function and pass context to it
const resolver = container.createResolver()
await handler.handle(resolver, ctx)
Optionalcontainer: T
The moduleImporter module works around a very specific pattern we use with AdonisJS, ie to lazy load modules by wrapping import calls inside a callback.
For example: Middleware of AdonisJS allows registering middleware as an array of import calls.
Behind the scenes, we have to run following operations in order to call the handle method on the defined middleware.
handlemethod on the middleware class using the container.