Nest.js 11

Apps로 구성한 nest.js를 한번에 실행시키기

Apps로 구성된 nest.js에 프로젝트는 기본적으로 다음과 같은 명령으로 실행시킵니다. npm run start:dev targetproject 문제는 이런 식으로는 한번에 하나씩만 실행이 가능하니 여러 프로젝트를 동시에 테스트할 생각이라면 다음과 같은 배치 파일을 만들어 놓으면 편할 것입니다. 먼저 pm2를 설치해 줍니다. 동시 실행하여 전체 프로세스를 테스트하기 위함이므로, 일괄 실행을 위해 pm2로 매니징을 할 것입니다. npm install -g pm2 이번에는 batch 파일을 만들어서 일괄로 실행시키고, 일괄로 중지하도록 해보겠습니다. 다음과 같이 3개의 batch 파일을 만들어 줍니다. 먼저 start.bat 파일입니다. @echo off echo compiling start /B npm..

MSA를 위한 Nest.js의 app 생성 명령

먼저 Nest.js의 프로젝트를 생성해 봅니다. nest new multiapp 리포지토리 선택자에서 npm을 선택해 줍니다. (자신에게 맞는 것을 선택해 줍니다.) 그럼 프로젝트의 각 요소들이 설치가 되는 화면이 보여집니다. 이제 해당 폴더로 이동한 다음, app 명령을 통해, 하나의 프로젝트에 2개 이상의 백엔드 api 를 구축할 수 있게 됩니다. 다음 명령을 입력해서 member app을 추가해 봅시다. nest g app member 프로젝트가 설치된 상황을 VS CODE로 확인해 봅시다. 보다시피, 먼저 설치한 프로젝트와 나중에 app 명령으로 추가한 member가 apps 폴더 아래에 나란히 배치됩니다. 둘은 동급 요소로써 취급됩니다. 이제 app 명령으로 필요한 만큼 프로젝트를 얼마든지 추가..

Nest.js에서 단위 테스트코드 구성 이해하기

Nest.js 에서 초기에 자동 생성되는 테스트 코드는 실행하면 오류가 발생합니다. tsconfig.json 에서 다음 항목을 수정해 주어야 합니다. { "compilerOptions": { //기존항목 "types": ["node","jest"], }, } 다음으로 단위 테스트 파일은 src 폴더 하위에, 파일명에 spec 이란 문자열을 포함하여 작성해야 합니다. 먼저 다음 메소드들에 대해서 알아야 합니다. "describe" 함수는 테스트 코드를 그룹화하고, 해당 그룹에 대한 설정을 제공하는 Jest에서 제공하는 함수 중 하나입니다. 이 함수를 사용하면 테스트를 더 구조화하고 읽기 쉽게 만들 수 있습니다. "beforeEach"는 Jest에서 제공하는 함수 중 하나로, 각 테스트가 실행되기 전에 공통..

Nest.js의 TypeORM의 접속정보 분리하기

TypeORM의 접속에 필요한 정보를 dbconfig.ts 파일로 따로 분리하여 app.module.ts의 소스코드를 간소화 시켜보겠습니다. 먼저 다음과 같이 분리된 접속 정보를 작성해 줍니다. import { TypeOrmModuleOptions } from '@nestjs/typeorm'; import { Member } from './entities'; const config: TypeOrmModuleOptions = { logging:false, type: 'mssql', host: String(process.env.DATABASE_HOST), port: Number(process.env.DATABASE_PORT), username: String(process.env.DATABASE_USERNAM..

Nest.js 에서 JWT 인증 구현하기

일단 기본적으로 간단하게 헤더에 토큰이 있는지 없는지만 검증하는 interceptor를 만들 겁니다. 다음 코드를 참고하세요. import { Injectable, NestInterceptor, ExecutionContext, CallHandler, UnauthorizedException } from '@nestjs/common'; import { Observable } from 'rxjs'; @Injectable() export class AuthInterceptor implements NestInterceptor { intercept(context: ExecutionContext, next: CallHandler): Observable { const request = context.switchToHt..

Nest.js 에서 Swagger에 Authorize 활성화 하기

스웨거를 이용한 테스트를 진행할 때, 필수적으로 필요한 게 검증절차일 겁니다. jwt 토큰을 사용한 인증시스템을 구현하고 이를 Swagger상에서 테스트 하기 위한 설정을 알아봅시다. Nest.js에서는 Authorize가 매우 쉽게 구현됩니다. DocumentBuilder에 addBearerAuth를 추가하면 됩니다. const config = new DocumentBuilder() .setTitle('Api Title') .setDescription('Api Description') .setVersion('1.0') .addTag('member') .addBearerAuth( { type: 'apiKey', scheme: 'bearer', in: 'header', name:'access_token' ..

Nest.js에서 env로 외부 환경요소 주입하기

일단 Nest.js에서 env를 사용하기 위해서 dotenv 라이브러리를 다음과 같이 설치해줍니다. npm install dotenv 만약 클러스터를 이용하고 있다면, 기존 포스트를 참고해 줍니다. https://roslyndev.tistory.com/33 Nest.js 에서 cluster로 요청 격리하기 기본적으로 Node.js를 계승한 Nest.js는 Node.js와 마찬가지로 요청이 격리되지 않는 이슈가 있다. (싱글스레드) 다른 Asp.net, Spring, PHP 등보다 안정성이 떨어지는 건 바로 이 부분인데, 요청이 격리되는 roslyndev.tistory.com 이제 .env파일을 만들어 줍니다. 각각 파일에 내가 필요로 하는 환경 요소들을 동일하게 넣어줍니다. 다음 내용은 예시니까, 참고만..

Nest.js를 Docker로 배포하기

먼저 프로젝트 루트에 Dockerfile 이란 파일을 만들어주자. (사실 파일이름은 아무렇게나 해도 상관없다.) 그런 다음 다음에 오는 내용을 작성해 주자. FROM node:18 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . RUN npm run build EXPOSE 3000 CMD [ "npm", "start" ] From은 사용할 이미지다. node:18 이미지 사용을 지정했다. 이미지 내에서 사용할 작업 폴더는 WORKDIR로 지정한다. COPY 명령을 통해 먼저 package.json 과 package-lock.json을 WORKDIR로 복사한다. 다음에 RUN 명령으로 npm install 명령어가 실행된다. 이제 C..

Nest.js + TypeORM 을 적용해보자.

이번에는 Nest.js 프로젝트에 TypeORM을 적용해 보자. 일부 관련된 자료 또는 TypeORM 공식 홈페이지에는 TypeORM의 CLI를 이용한 프로젝트 생성방법이 거론되고 있는데, 우리는 Nest를 이용해서 프로젝트를 생성할 것임으로 굳이 TypeORM을 글로벌로 설치할 필요는 없다. 먼저 현재 프로젝트에 설치부터 해주자. npm install typeorm reflect-metadata @nestjs/typeorm reflect-metadata는 TypeScript에서 데코레이터 메타데이터를 사용하는 데 필요한 라이브러리입니다. TypeScript는 데코레이터를 지원하는데, 이를 사용하면 클래스와 클래스 멤버에 메타데이터를 연결할 수 있습니다. TypeORM은 이러한 데코레이터를 사용하여 엔터..

Nest.js 에서 cluster로 요청 격리하기

기본적으로 Node.js를 계승한 Nest.js는 Node.js와 마찬가지로 요청이 격리되지 않는 이슈가 있다. (싱글스레드) 다른 Asp.net, Spring, PHP 등보다 안정성이 떨어지는 건 바로 이 부분인데, 요청이 격리되는 다른 웹언어들은 한곳에서 오류가 나도 그 요청에 대한 오류로 끝나지만, Node.js나 Nest.js는 서버 응용프로그램이 종료되는 치명적인 문제를 가지고 있다. 때문에, 반드시 요청을 격리시켜주는 별도의 작업이 필요하게 되는데, 그중 가장 기본적인 방법을 기술해보자. 먼저 node 의 cluster를 원활히 사용하기 위해 type/node를 설치해 주자. npm install --save-dev @types/node 그런 다음 tscofnig.json 파일에 compile..

반응형