「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Nest.js で環境変数とマルチ環境を構成する最良の方法

Nest.js で環境変数とマルチ環境を構成する最良の方法

2024 年 8 月 16 日に公開
ブラウズ:892

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

私が Nest.js で気に入っている点は、これが強力で完全な node.js フレームワークであり、構築のための独自の完全なソリューションを提供することです。バックエンド アプリケーション。

最初から

TypeScript サポートが組み込まれており、OOP (オブジェクト指向プログラミング)、FP (関数型プログラミング)、[公式ウェブサイトにあるように、&&&]FRP (Functional Reactive Programming)。 また、最初からアーキテクチャが組み込まれており、優れた構造化アーキテクチャ プロジェクトに取り組むのが好きな私のような人間にとっては素晴らしいことです。

ドキュメントだけでも非常に印象的で、

環境変数の設定方法を含むあらゆる側面をカバーしていますが、私にとっては 複数の環境を設定する方法がよくわかりませんでした。
おそらく、私がnode.jsとnestjsを初めて使用したからかもしれませんが、インターネットで記事を探すと、常にnestjsをネイティブに使用するのではなく、dotenvライブラリを直接使用する方法が示されていました。フード。

そして、ドキュメントの横にある記事を何時間も眺めた後、Nestjs にネイティブなソリューションを見つけ出し、それを共有したいと思いました。


初め

プロジェクトには 2 つの環境が必要だと仮定します

'dev'

'prod' 環境ごとに 2 つの環境変数が必要です: PORT
DATABASE_URL. 1-

PORT

DATABASE_URL を保存する 2 つの .env ファイルを作成し、ファイルに名前を付けます ( .env.dev および .env.prod.)
ポート=3500 DATABASE_URL="ファイル:./dev.db"`

PORT=3500

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

という名前の環境変数を作成します。ただし、今回は .env ファイルに保存する代わりに、dev と prod の起動スクリプトに挿入します。

NODE_ENV

の設定はプラットフォーム (Windows、Mac、または Linux) によって異なる場合があるため、プラットフォーム間で環境変数を設定できるようにするために、cross-div パッケージをインストールします。 npmを使用してインストール


$ npm install --save-dev クロス環境

$ npm install --save-dev cross-env


$ pnpm install --save-dev クロス環境

$ pnpm install --save-dev cross-env
を使用するように package.json スクリプトを変更します。


「スクリプト」: {     "start:dev": "cross-env-shell NODE_ENV=dev ネスト開始 --watch",     "start:prod": "cross-env-shell NODE_ENV=prod ノード dist/main", }

"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 

npm run start:dev 


pnpm run start:dev

pnpm run start:dev
NODE_ENV=dev

があり、アプリケーション全体で使用できます。 3- Nestjs が .env ファイルを読み取るためには、

ConfigModule

を使用して正しく設定する必要がありますが、まずインストールする必要があります。 npm


$ npm i --save @nestjs/config

$ npm i --save @nestjs/config


$ pnpm i --save @nestjs/config

$ pnpm i --save @nestjs/config

ConfigModule

を使用します:
@モジュール({   輸入品: [     ConfigModule.forRoot({       isGlobal: true、       envFilePath: `.env.${process.env.NODE_ENV}`,     })、   ]、   コントローラー: [AppController]、   プロバイダー: [AppService]、 }) エクスポート クラス AppModule {}

pnpm run start:dev

envFilePath: .env ファイルの別のパスを指定するために使用されます。  または、デフォルトの .env ファイルとは異なるファイルを読み取ります

.env.${process.env.NODE_ENV}

.env.dev および に変換されます。 コマンドを実行すると

npm run start:prod

pnpm run start:dev
.env.${process.env.NODE_ENV}

.env.prod. に変換されます。 5-

環境変数にアクセスする方法

環境変数にアクセスするには、ConfigModule
. を使用します。

main.ts

で使用できます
非同期関数 bootstrap() {   const app = await NestFactory.create(AppModule);   const configService = app.get(ConfigService);   const port = configService.get('PORT');   app.listen(ポート)を待ちます; }

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

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

  await app.listen(port);
}
例えば



@Injectable() エクスポート クラス AppService {   コンストラクター(プライベート configService: ConfigService) {}   getHello(): 文字列 {     戻る (       this.configService.get('DATABASE_URL')     );   } }

@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