"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Nest.js에서 환경 변수 및 다중 환경을 구성하는 가장 좋은 방법

Nest.js에서 환경 변수 및 다중 환경을 구성하는 가장 좋은 방법

2024-08-16에 게시됨
검색:247

The Best way to configure environment variables and multi environments in Nest.js

무엇 제가 Nest.js에서 정말 좋아하는 점은 이 프레임워크가 빌드를 위한 완벽한 솔루션을 제공하는 강력하고 완전한 node.js 프레임워크라는 점입니다. 백엔드 애플리케이션.

처음부터 TypeScript 지원이 내장되어 있으며 OOP(객체 지향 프로그래밍), FP(함수 프로그래밍) 및 FRP (함수형 반응형 프로그래밍), 공식 웹사이트에 나와 있습니다.

또한 처음부터 아키텍처가 포함되어 있는데, 이는 나처럼 잘 구조화된 건축 프로젝트 작업을 좋아하는 사람에게는 놀라운 일입니다.

문서 자체가 매우 인상적이며 환경 변수 설정 방법을 포함한 모든 측면을 다루고 있지만 저에게는
여러 환경을 설정하는 방법을 잘 모르겠습니다.

제가 node.js와 Nestjs를 처음 접해서인지 인터넷에서 기사를 찾아보니 기본적으로 Nestjs를 사용하는 대신 dotenv 라이브러리를 직접 사용하는 방법이 항상 나와 있었습니다. 후드.

그리고 문서 옆에 있는 기사를 몇 시간 동안 살펴본 후 Nestjs에 고유한 솔루션을 찾아 공유하고 싶다고 생각했습니다.


첫 번째

우리 프로젝트에 'dev''prod'
2개의 환경이 필요하다고 가정해 보겠습니다. 환경당 2개의 환경 변수가 필요합니다: PORTDATABASE_URL.

1- PORTDATABASE_URL를 저장할 2개의 .env 파일을 만들고 파일 이름을 지정합니다( .env.dev.env.prod.)

PORT=3500

DATABASE_URL="file:./dev.db"`

2- NODE_ENV라는 env 변수를 생성합니다. 하지만 이번에는 이를 .env 파일에 저장하는 대신 dev 및 prod의 시작 스크립트에 삽입합니다.

NODE_ENV 설정은 플랫폼(Windows, Mac 또는 Linux)에 따라 다를 수 있으므로 플랫폼에 따라 환경 변수를 설정할 수 있도록 cross-div 패키지를 설치하겠습니다.

npm을 사용하여 설치

$ npm install --save-dev cross-env

또는 pnpm 사용

$ pnpm install --save-dev cross-env

그런 다음 크로스 환경을 사용하도록 package.json 스크립트를 수정합니다.

"scripts": {
    "start:dev": "cross-env-shell NODE_ENV=dev nest start --watch",
    "start:prod": "cross-env-shell NODE_ENV=prod node dist/main",
}

이제
를 사용하여 애플리케이션을 실행하면

npm run start:dev 

또는

pnpm run start:dev

NODE_ENV=dev가 있으며 이를 애플리케이션 전체에서 사용할 수 있습니다.

3- Nestjs가 .env 파일을 읽으려면 ConfigModule을 사용하여 올바르게 구성해야 하지만 먼저 설치해야 합니다.

npm

$ npm i --save @nestjs/config

pnpm

$ pnpm i --save @nestjs/config

4- ConfigModule 사용 :

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: `.env.${process.env.NODE_ENV}`,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

envFilePath: .env 파일의 다른 경로를 지정하는 데 사용됩니다. 
또는 기본 .env 파일과 다른 파일을 읽습니다.

.env.${process.env.NODE_ENV}.env.dev
로 변환됩니다.
명령을 실행하면

npm run start:prod

.env.${process.env.NODE_ENV}.env.prod.

로 번역됩니다.

5- 환경 변수에 액세스하는 방법
환경 변수에 액세스하려면 ConfigModule.

를 사용합니다.

main.ts
에서 사용할 수 있습니다.

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

  const configService = app.get(ConfigService);
  const port = configService.get('PORT');

  await app.listen(port);
}

또는 다른 곳에서 필요하면 주입을 사용합니다.
예를 들어

@Injectable()
export class AppService {
  constructor(private configService: ConfigService) {}

  getHello(): string {
    return (
      this.configService.get('DATABASE_URL')
    );
  }
}
릴리스 선언문 이 기사는 https://dev.to/ahmed_hyperov/the-best-way-to-configure-environment-variables-and-multi-environments-in-nestjs-31fi?1에 재현되어 있습니다. 침해가 있는 경우, 문의: Study_golang@163 .comdelete
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3