Dev Study
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 {}
公式ドキュメントで詳しく ↗