前提
Nestjs TypeScriptでこちらの記事を参考にtodoアプリを作っています。
$ NODE_ENV=development npm start // 教材内では $ NODE_ENV=development yarn run start
を実行した際に以下のエラーメッセージが発生しました。
Error: Cannot find module './tasks.controller' Require stack:
実現したいこと
npm start が問題なく走るようにしたい
発生している問題・エラーメッセージ
tasks.controllerのモジュールが見つからないという内容のエラーが起きます。
Error: Cannot find module './tasks.controller' Require stack:
該当のソースコード
src/tasks/tasks.module.ts
1import { Module } from '@nestjs/common'; 2import { TasksController } from './tasks.controller'; 3import { TasksService } from './tasks.service'; 4 5@Module({ 6 controllers: [TasksController], 7 providers: [TasksService] 8}) 9 10export class TasksModule {} 11
src/tasks/tasks.controller.ts
1import { Body, Controller, Delete, Get, Param, ParseIntPipe, Patch, Post, UsePipes, ValidationPipe } from '@nestjs/common'; 2import { TaskPropertyDto } from './dto/task-property.dto'; 3import { TaskStatusPipe } from './pipe/task-status.pipe'; 4 5@Controller('tasks') 6export class TasksController { 7 8 @Get() 9 getTasks() { 10 return "getTasks Success!" 11 } 12 13 @Get('/:id') 14 getTaskById( 15 @Param('id', ParseIntPipe) id: number) { 16 return `getTaskById Success! Parameter [id:${id}]` 17 } 18 19 @Post() 20 @UsePipes(ValidationPipe) 21 createTask( 22 @Body() taskPropertyDto: TaskPropertyDto) { 23 const { title, description } = taskPropertyDto 24 return `createTask Success! Prameter [title:${title}, descritpion:${description}]` 25 } 26 27 @Delete('/:id') 28 deleteTask( 29 @Param('id', ParseIntPipe) id: number) { 30 return `deleteTask Success! Prameter [id:${id}]` 31 } 32 33 @Patch('/:id') 34 updateTask( 35 @Param('id', ParseIntPipe) id: number, 36 @Body('status',TaskStatusPipe) status: string ) { 37 return `updateTask Success! Prameter [id:${id}, status:${status}]` 38 } 39}
src/app.module.ts
1import { Module } from '@nestjs/common'; 2import { ConfigModule } from '@nestjs/config'; 3import { TypeOrmModule } from '@nestjs/typeorm'; 4import { TypeOrmConfigService } from 'config/typeorm-config.service'; 5import { TasksModule } from './tasks/tasks.module'; 6 7@Module({ 8 imports: [ 9 /** env読み込み 10 * 環境変数NODE_ENVの値によって読み込むファイルを切り替える。 11 * default.envは後続で呼ばれる。同じ変数がある場合は先に定義されているものが優先される。 12 */ 13 ConfigModule.forRoot({ 14 envFilePath: [`.env/${process.env.NODE_ENV}.env`,'.env/default.env'], 15 isGlobal: true, 16 }), 17 // TypeORMの設定を非同期取得に変更 18 TypeOrmModule.forRootAsync({ 19 imports: [ConfigModule], 20 useClass: TypeOrmConfigService, 21 }), 22 TasksModule, 23 ], 24}) 25export class AppModule {}
src/main.ts
1import { ConfigService } from '@nestjs/config'; 2import { NestFactory } from '@nestjs/core'; 3import { AppModule } from './app.module'; 4 5async function bootstrap() { 6 7 const app = await NestFactory.create(AppModule); 8 const configService = new ConfigService(); 9 10 const sync = configService.get('DB_SYNC'); 11 12 console.log(`TypeORM synchronize is [ ${sync}]`); 13 14 const port = configService.get('API_PORT'); 15 await app.listen(port); 16} 17 18bootstrap();
試したこと
- pathの指定を変えた。
src/tasks/tasks.module.ts
1import { TasksController } from './tasks.controller'; 2 3↓ 4 5import { TasksController } from 'src/tasks/tasks.controller'; 6
-
tasks.controllerファイルを一度削除して作り直した
-
node_moduleを削除して再度インストールし直した
-
以下のコマンドを実行
export NODE_PATH=`npm root -g`
補足情報(FW/ツールのバージョンなど)
nestjs 9.0.0
あなたの回答
tips
プレビュー