>  기사  >  웹 프론트엔드  >  Nest.js에서 환경 변수 및 다중 환경을 구성하는 가장 좋은 방법

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

WBOY
WBOY원래의
2024-08-10 06:40:36354검색

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

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

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

처음부터 건축이 포함되어 있는데, 이는 잘 구조화된 건축 프로젝트 작업을 좋아하는 저와 같은 사람에게는 놀라운 일입니다.

문서 자체가 매우 인상적이며

환경 변수 설정 방법을 포함한 모든 측면을 다루고 있지만 저에게는 여러 환경을 설정하는 방법을 잘 모르겠습니다.

제가 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
그런 다음 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<string>('DATABASE_URL')
    );
  }
}

위 내용은 Nest.js에서 환경 변수 및 다중 환경을 구성하는 가장 좋은 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.