www/apps/resources/app/lint/rules/loader-must-be-exported-in-module-definition/page.mdx
export const metadata = {
title: loader-must-be-exported-in-module-definition - ESLint plugin rules,
}
This rule requires that loader files under a module's loaders directory are registered in the module's loaders array.
warn. This rule is enabled in the recommended preset.
This rule targets loader files under src/modules/<module>/loaders/. It reports a loader file that isn't referenced in the loaders array of the module's definition in index.ts.
The following loader is reported by the rule when it isn't registered in the module definition in index.ts:
import { LoaderOptions } from "@medusajs/framework/types"
export default async function myLoader({
container,
}: LoaderOptions) {
// ...
}
Instead, register the loader in the module's loaders array in index.ts:
import { Module } from "@medusajs/framework/utils"
import BlogModuleService from "./service"
import myLoader from "./loaders/my-loader"
export default Module("blog", {
service: BlogModuleService,
loaders: [myLoader],
})
A loader only runs when it's registered in the module's loaders array. An unregistered loader file is dead code that never executes, which often points to a forgotten registration.
Learn more in the Modules documentation.
This rule isn't auto-fixable.
To turn off this rule, set it to off in your ESLint configuration:
import { defineConfig } from "eslint/config"
import medusa from "@medusajs/eslint-plugin"
export default defineConfig([
...medusa.configs.recommended,
{
rules: {
"@medusajs/loader-must-be-exported-in-module-definition": "off",
},
},
])
Or disable it for a single line using an inline comment:
// eslint-disable-next-line @medusajs/loader-must-be-exported-in-module-definition
export default async function myLoader() {}