ホームページ > 記事 > ウェブフロントエンド > Nest.js で環境変数とマルチ環境を構成する最良の方法
Nest.js の気に入っているところは、これが強力で完全な Node.js フレームワークであり、構築のための独自の完全なソリューションを提供することです。バックエンド アプリケーション。
最初からTypeScript サポートが組み込まれており、OOP (オブジェクト指向プログラミング)、FP (関数型プログラミング)、および FRP (Functional Reactive Programming)、公式 Web サイトにあるとおり。 最初からアーキテクチャも備えており、優れた構造化アーキテクチャ プロジェクトに取り組むのが好きな私のような人間にとっては素晴らしいことです。
ドキュメントだけでも非常に印象的で、
環境変数の設定方法を含むあらゆる側面を網羅していますが、私にとっては
複数の環境を設定する方法がよくわかりませんでした。
私がnode.jsとnestjsを初めて使用したためかもしれませんが、インターネットで記事を探すと、常にnestjsをネイティブに使用するのではなく、dotenvライブラリを直接使用する方法が示されていました。フード。
そして、ドキュメントの横にある記事を何時間も読んだ後、Nestjs にネイティブなソリューションを考え出し、それを共有したいと思いました。
プロジェクトには 2 つの環境が必要であると仮定します
'dev' と 'prod'
そして、環境ごとに 2 つの環境変数が必要です: PORT
と DATABASE_URL.
1-
と DATABASE_URL を保存する 2 つの .env ファイルを作成し、ファイルに名前を付けます (.env.dev と .env.prod.)
PORT=3500 DATABASE_URL="file:./dev.db"`NODE_ENV
という環境変数を作成します。ただし、今回は .env ファイルに保存するのではなく、dev と prod の起動スクリプトに挿入します。
NODE_ENVの設定はプラットフォーム (Windows、Mac、または Linux) ごとに異なる場合があるため、プラットフォーム間で環境変数を設定できるようにするために、cross-div パッケージをインストールします。 npm を使用してインストール
$ npm install --save-dev cross-env
$ pnpm install --save-dev cross-env
"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:devNODE_ENV=dev
があり、それをアプリケーション全体で使用できます。 3- Nestjs が .env ファイルを読み取るためには、
ConfigModuleを使用して正しく設定する必要がありますが、その前にインストールする必要があります。 npm
$ npm i --save @nestjs/config
$ pnpm i --save @nestjs/configConfigModule
を使用します:
@Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, envFilePath: `.env.${process.env.NODE_ENV}`, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
envFilePath: .env ファイルの別のパスを指定するために使用されます。
または、デフォルトの .env ファイルとは異なるファイルを読み取ります
は、.env.dev および に変換されます。
コマンドを実行すると
npm run start:prod.env.${process.env.NODE_ENV}
は、.env.prod. に変換されます。 5-
環境変数にアクセスする方法
環境変数にアクセスするには、ConfigModule
. を使用します。
で使用できます
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 中国語 Web サイトの他の関連記事を参照してください。