最新のソフトウェアには、柔軟性、拡張性、堅牢なセキュリティが求められます。 環境変数は、このバランスを達成する上で重要な役割を果たします。このガイドでは、セキュリティと保守性のベスト プラクティスに重点を置き、Node.js アプリケーション内で環境変数を設定および管理するためのさまざまな方法を説明します。 起動時の検証から機密データの漏洩防止まで、すべてをカバーします。 経験豊富な開発者でも、Node.js の初心者でも、この情報は安全で適応性のあるアプリケーションを構築するために不可欠です。
環境変数は、アプリケーションのコードベースの外部、通常は構成ファイルまたはシステム設定に保存されるキーと値のペアです。 API キーやデータベース認証情報などの機密データが保持されるため、ハードコーディングが防止され、セキュリティが向上します。 このアプローチにより、さまざまな環境 (開発、テスト、運用) にわたる管理が簡素化されます。
Node.js では、環境変数を使用すると、コードを変更せずに動的なアプリケーション構成が可能になります。同じコードベースが環境に応じて異なるデータベースまたは API と対話できるため、セキュリティが強化され、展開が簡素化され、適応性が高まります。
標準の JavaScript 変数とは異なり、環境変数はコード内で定義されません。これらは process.env
経由でアクセスされ、独立して存在するため、システム上の複数のアプリケーションに影響を与える可能性があります。
Node.js は、process.env
オブジェクトを使用して環境変数にアクセスし、管理します。 変数の値を取得するには、process.env.VARIABLE_NAME
を使用します。たとえば、process.env.API_KEY
は API_KEY
に関連付けられた値を取得します。 コード内で環境変数を設定することは技術的には可能ですが、一般的には推奨されません。それは、そもそも環境変数を使用する利点を無効にします。
Express API で API_KEY
を使用する方法は次のとおりです:
<code class="language-javascript">const express = require('express'); const app = express(); // Access API key from environment variables const apiKey = process.env.API_KEY; if (!apiKey) { console.error('Error: API key is not defined.'); process.exit(1); } app.get('/', (req, res) => { res.send('API key successfully loaded.'); }); // Start the server const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });</code>
ここで、環境変数を設定するためのさまざまな方法を検討してみましょう:
dotenv
: の使用 dotenv
パッケージは、環境変数をコードから分離することで環境変数の管理を簡素化します。 .env
ファイルでキーと値のペアを定義します:<code>PORT=3000 DB_USERNAME=dbuser</code>
次のようにインポートして使用します:
<code class="language-javascript">import * as dotenv from 'dotenv'; dotenv.config(); console.log(process.env.PORT); // Output: 3000 console.log(process.env.DB_USERNAME); // Output: dbuser</code>
.env
を使用して、代替の dotenv.config({ path: './path/to/another.env' })
ファイル パスを指定できます。 開発には役立ちますが、運用には他の方法も検討してください。
~/.bashrc
、~/.zshrc
)。 これは、そのシェル セッション内のすべてのプロセスに影響します。 例:<code class="language-javascript">const express = require('express'); const app = express(); // Access API key from environment variables const apiKey = process.env.API_KEY; if (!apiKey) { console.error('Error: API key is not defined.'); process.exit(1); } app.get('/', (req, res) => { res.send('API key successfully loaded.'); }); // Start the server const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });</code>
ターミナルを再起動するか、source ~/.bashrc
を実行して変更を適用します。 システム全体のアクセス (システム プロセス) の場合は、/etc/environment
.
launch.sh
):<code>PORT=3000 DB_USERNAME=dbuser</code>
実行可能にして (chmod x launch.sh
)、実行します (./launch.sh
)。
<code class="language-javascript">import * as dotenv from 'dotenv'; dotenv.config(); console.log(process.env.PORT); // Output: 3000 console.log(process.env.DB_USERNAME); // Output: dbuser</code>
または、環境固有の構成には ecosystem.config.js
ファイルを使用します。
Dockerfile
:ENV
を使用して <code class="language-bash"># ~/.bashrc export PORT=3000 export DB_USERNAME=myuser</code>
-e PORT=5173
を使用してコンテナを実行するとき、または docker-compose.yml
ファイル内でコンテナを実行するときにデフォルトをオーバーライドします。
安全で保守可能なアプリケーションを実現するには、次のベスト プラクティスに従ってください。
わかりやすい名前とドキュメント: 明確でわかりやすい名前を使用し、その目的をプロジェクトの README に文書化します。
起動検証: アプリケーションの起動時に環境変数を検証して、正しく設定されていることを確認します。 欠落している変数を適切に処理します (デフォルト値またはエラー処理)。
.env
ファイルの除外: .env
..gitignore
を使用して、バージョン管理 (Git) から
KMS (キー管理システム) を検討します: セキュリティを強化するため、特に機密性の高いデータの場合は、KMS を使用して環境変数を暗号化して保存します。
デフォルト値: 変数が欠落している場合でもアプリケーションの機能を保証するために、重要ではない環境変数のデフォルト値を提供します。
フロントエンドで公開しない: 機密の環境変数をクライアント側のコードに直接公開しないでください。
Clerk SDK は、Clerk ダッシュボード内の構成とアプリケーションの関連付けに環境変数を利用します。 これにより、Express を使用した安全なバックエンド リクエストとフロントエンド検証が可能になります。 例:
<code class="language-bash">#!/bin/bash export PORT=3000 export DB_USERNAME=myuser node app.js</code>
環境変数を安全に管理することが最も重要です。 これらのベスト プラクティスに従うことで、Node.js アプリケーションのセキュリティと保守性が大幅に強化され、運用環境へのデプロイメントの準備が整います。
以上がNode.jsで環境変数を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。