私が 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-
と 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:devNODE_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/configConfigModule
を使用します:
@モジュール({
輸入品: [
ConfigModule.forRoot({
isGlobal: true、
envFilePath: `.env.${process.env.NODE_ENV}`,
})、
]、
コントローラー: [AppController]、
プロバイダー: [AppService]、
})
エクスポート クラス AppModule {}
pnpm run start:dev
envFilePath: .env ファイルの別のパスを指定するために使用されます。
または、デフォルトの .env ファイルとは異なるファイルを読み取ります
は .env.dev および に変換されます。
コマンドを実行すると
npm run start:prod
pnpm run start:dev.env.${process.env.NODE_ENV}
は .env.prod. に変換されます。 5-
環境変数にアクセスする方法
環境変数にアクセスするには、ConfigModule
. を使用します。
で使用できます
非同期関数 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
@Injectable() export class AppService { constructor(private configService: ConfigService) {} getHello(): string { return ( this.configService.get('DATABASE_URL') ); } }
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3