상세 컨텐츠

본문 제목

main.ts 분석

카테고리 없음

by esoesmio 2024. 5. 9. 16:50

본문

import {Logger} from "@nestjs/common";
import {NestFactory} from "@nestjs/core";
import {AppModule} from './app.module';
import * as config from 'config';


async function bootstrap() {
    const app = await NestFactory.create(AppModule);
    const serverConfig = config.get('server')
    const port = serverConfig.port;
    await app.listen(port);
    Logger.log(`application running on port ${port}`);


}
bootstrap();

 

 

이 코드는 NestJS 프레임워크를 사용하여 Node.js 애플리케이션을 시작하는 방법을 보여줍니다. NestJS는 백엔드 애플리케이션을 구축하기 위한 모듈러 구조를 제공하는 Node.js 프레임워크입니다. 각 부분의 역할을 하나씩 살펴보겠습니다.

  1. Imports:
    • import { Logger } from '@nestjs/common';: Logger 클래스를 NestJS의 common 패키지에서 가져옵니다. 이 클래스는 애플리케이션 로깅을 담당합니다.
    • import { NestFactory } from '@nestjs/core';: NestFactory를 사용하여 NestJS 애플리케이션의 인스턴스를 생성합니다. 이것은 NestJS 애플리케이션의 진입점을 만드는데 사용됩니다.
    • import { AppModule } from './app.module';: 애플리케이션의 루트 모듈인 AppModule을 가져옵니다. 이 모듈은 애플리케이션의 다른 모듈들을 구성합니다.
    • import * as config from 'config';: config 패키지를 사용하여 구성 설정을 로드합니다. 이 구문은 config 모듈의 모든 내보낸 멤버를 config 객체로 가져옵니다.
  2. config 모듈: import * as config from 'config'; 이 부분은 Node.js에서 환경 설정 파일을 쉽게 관리할 수 있게 해주는 외부 config 라이브러리를 사용합니다. 이 라이브러리를 사용하면 개발, 테스트, 프로덕션 등 다양한 환경에 따라 다른 설정을 로드할 수 있습니다. config 폴더 내에 JSON, YAML 또는 JS 파일로 설정을 정의하고, config 라이브러리는 실행 환경에 맞는 설정 파일을 자동으로 선택합니다.
  3. bootstrap 함수: async function bootstrap()는 비동기 함수로, 애플리케이션을 시작하는 주요 로직을 포함합니다.
    • const app = await NestFactory.create(AppModule);: NestFactory.create() 메소드를 사용해 AppModule을 기반으로 NestJS 애플리케이션 인스턴스를 생성합니다.
    • const serverConfig = config.get('server');: config 객체에서 server 설정을 가져옵니다. 이 설정은 보통 포트 번호와 같은 서버 설정을 포함합니다.
    • const port = serverConfig.port;: 설정에서 포트 번호를 추출합니다.
    • await app.listen(port);: 추출한 포트 번호에서 애플리케이션을 실행합니다. 이것은 서버가 클라이언트 요청을 수신할 준비가 되었다는 것을 의미합니다.
    • Logger.log(Application running on port ${port});: 로깅을 사용하여 서버가 실행 중임을 로그로 기록합니다.

이 코드는 기본적으로 NestJS 프레임워크를 사용하여 서버를 설정하고 시작하는 방법을 보여줍니다. config 라이브러리를 사용하면 설정 관리가 더 유연해지고 환경별로 쉽게 구성할 수 있습니다.

댓글 영역