Node.js/NestJS

[NestJS] 1. NestJS 설치

턴태 2022. 9. 25. 13:04

오늘 디프만 오리엔테이션을 갔다왔는데, 같은 팀 서버를 맡으신 노드 개발자 세 분 모두 NestJS를 사용하신다고 하시어 NestJS로도 토이 프로젝트를 진행해볼까 합니다.

 

1. NestJS 설치

모든 내용은 공식문서를 기반으로 설치하겠습니다. 먼저 NestJS를 설치하기 앞서 NestJS의 cli를 설치합니다.

npm i -g @nestjs/cli

cli를 설치했으면 이제 터미널 상에서 nest를 입력하여 nest 관련 기능을 사용할 수 있습니다. 먼저 새로 프로젝트를 만듭니다.

nest new [project-name]

저는 테스트 케이스 공유 서비스를 구현해보고자 yourtc라는 이름으로 프로젝트를 만들겠습니다! 나의 주적 반례,,,,

그러면 패키지 매니저를 선택하라고 하는데 저는 npm을 사용하겠습니다. 튜닝의 끝은 순정.

 

설치가 완료됐으면 정상적으로 작동하는지 일단 서버를 실행시켜보겠습니다.

Express 보다는 시작하는 데 시간이 조금 걸립니다.

3000번 포트에서 서버가 정상적으로 실행되고 있는 것을 볼 수 있습니다!

 

이제 src에 만들어진 파일을 살펴보겠습니다.

 

src에는 app.controller.spec.ts, app.controller.ts, app.module.ts, app.service.ts, main.ts 파일이 있습니다.

 

  • app.controller.ts - 라우트에 대한 컨트롤러 파일
  • app.controller.spec.ts - 컨트롤러를 유닛 테스트할 때 사용하는 파일
  • app.module.ts - 어플리케이션의 루트 모듈입니다. 사용하는 컨트롤러와 서비스를 정의하고, ORM 의 모델들을 Import 하는 등의 역할을 합니다.
  • app.service.ts - 메서드에 대한 서비스를 정리하는 파일입니다.
  • main.ts - 어플리케이션의 구동 파일입니다. NestFactory를 통해 Nest 어플리케이션의 인스턴스를 생성합니다.

main.ts에서 부트스트랩 함수를 생성하여 서버를 구동합니다. 이때, NestFactory라는 코어 클래스를 통해 Nest 어플리케이션을 생성합니다.

 

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

create 메서드는  INestApplication의 인터페이스를 충족시키는 어플리케이션 객체를 반환합니다. 이 객체는 인바운드 HTTP 요청들을 기다리는 HTTP 리스너를 실행시켜주는 역할을 합니다.