[NestJS] 기본 구조, 설치 및 실행

yongtae·2024년 4월 19일

NestJS

목록 보기
1/2
post-thumbnail

NestJS란?

  • NodeJS기반 백엔드 프레임워크로 Express.js 위에서 작동되는 플랫폼이다.
  • TS를 사용하여 OOP형태로 백엔드를 구현할 수 있게해준다.

설치 및 실행

설치

  • npm i -g @nestjs/cli
    • -g 옵션으로 global하게 nest를 설치해 줘야 nest명령어를 편하게 사용할 수 있다.
  • nest new (프로젝트명)
    - 여기서 npm install —silent 오류로 인해 어려움을 겪었었는데, 오류가 발생한다면
    [Nest.js] nest.js 설치하기 (feat.npm install –silent fail error 해결법)
    sudo chown -R $USER:$GROUP ~/.npm
    sudo chown -R $USER:$GROUP ~/.config
    npm i -g @nestjs/cli
    • 해당 명령어를 수행 해준 후 다시 시도 해 보자.
      프로젝트 생성완료!

실행

  • npm run start:dev로 개발모드로 실행한다.
  • 포트가 이미 사용 중이라면
    • sudo lsof -i :3000 (포트번호)
    • kill -9 (PID값) 수행 시 포트 비우기가 가능하다. (node PID를 지워주면됨)
    • 다시 실행시켜 보면 서버가 제대로 구동되는 것을 확인할 수 있다.

Overview, Decorater(@)

기본 구조

  • 실행 후 localhost:3000 에 접속하면 Hello World! 확인가능.

    Hello World!가 어디서 호출되는지 한번 알아보자.

  • Nest는 기본적으로 무조건 main.ts를 가진다. (이름 변경불가)

    • main.ts 내부에서 AppMoule을 생성하여 호출됨
    • bootstrap()은 이름 임의로 변경가능하다.
  • AppModule 모듈

    • Nest는 데코레이터(@)와 항상 함께한다!
    • @가 붙은 것을 해당 클래스의 데코레이터라 함
    • 데코레이터는 클래스에 함수기능을 추가 할 수 있게 함
    • 클래스 위의 함수이고, 클래스를 위해 움직인다라고 생각하면 됨
    • 데코레이터는 꾸며주는 함수, 클래스와 항상 붙어있어야 함(스페이스 등이 들어가면 안됨)
      app.module.ts
  • AppController 컨트롤러

    • localhost:3000/으로 접속하니 @Get('/')getHello()가 호출된다.
      (@Get()@Get('/')는 같다)
    • 컨트롤러의 getHello()appServicegetHello()를 리턴한다.
  • AppService 서비스

    • AppController가 참조한 appServicegetHello()를 호출한다.
    • 여기 있는 getHello()가 호출되어 Hello World!가 출력되는 것이다.

정리

  1. main.ts에서 시작
  2. main.ts에서 AppModule 모듈 호출
  3. AppModule 모듈에서 AppController 컨트롤러 호출
  4. AppController 컨트롤러에서 AppService 서비스 호출
  5. AppService에서 getHello()를 호출하여 ‘Hello World!’
profile
성장하는 프런트엔드 개발자

0개의 댓글