← NestJS コース
8. モジュール — 機能のまとまり
モジュールは、関連するコントローラとプロバイダを1つの機能単位に束ねる部品です。@Module() デコレータに controllers と providers を列挙して登録します。アプリ全体は必ず1つのルートモジュール(AppModule)から始まり、機能モジュールを imports でぶら下げていきます。
実務ではユーザー管理は UsersModule、注文は OrdersModule のように機能ごとに分割します。新しい機能を追加するときは「モジュールを1つ作って AppModule の imports に足す」が基本の流れです。
つまずきやすいのは「providers に登録し忘れて注入が解決できない」というエラーです。Nest can't resolve dependencies というメッセージを見たら、まずそのクラスがモジュールの providers に載っているかを疑いましょう。
サンプルコード(フレームワーク環境が必要なため表示のみ)
import { Module } from "@nestjs/common";
import { UsersController } from "./users.controller";
import { UsersService } from "./users.service";
@Module({
controllers: [UsersController], // この機能のコントローラ
providers: [UsersService], // この機能のプロバイダ
})
export class UsersModule {}
// ルートモジュールは imports で機能モジュールを取り込む
@Module({
imports: [UsersModule],
})
export class AppModule {}