Node.jsでポート番号を変更する方法
Node.jsでprocess.env.PORTの値を変更する方法の日本語解説
Node.jsにおいて、環境変数であるprocess.env.PORT
の値を変更する方法について解説します。
環境変数とは
環境変数は、アプリケーションの実行環境に関する情報(例えば、ポート番号、パス、データベース接続情報など)を保存する変数です。Node.jsでは、process.env
オブジェクトを使用して環境変数にアクセスできます。
process.env.PORT
とは
process.env.PORT
は、アプリケーションが使用するポート番号を指定する環境変数です。通常、アプリケーションはデフォルトのポート番号(例えば、3000)を使用しますが、環境変数を設定することで異なるポート番号を使用することができます。
値の変更方法
環境変数を直接設定する
-
コード内で
process.env.PORT = '5000';
このコードを実行すると、
process.env.PORT
の値が5000に設定されます。 -
コマンドラインから
PORT=4000 node app.js
このコマンドを実行すると、
process.env.PORT
の値が4000に設定され、アプリケーションはポート4000で実行されます。
環境変数ファイルを使用する
dotenv
パッケージを使用して.env
ファイルをロードします。
これで、require('dotenv').config();
process.env.PORT
の値が.env
ファイルから読み込まれます。.env
ファイルを作成し、その中に環境変数を定義します。例えば、PORT=3001
注意点
- 環境変数ファイルを使用する際には、
.env
ファイルをバージョン管理システムに含めないように注意してください。 - 環境変数を直接設定する方法は、特定の環境でのデバッグやテストに適していますが、本番環境では環境変数ファイルを使用することを推奨します。
- 環境変数の値は、アプリケーションが実行される環境によって異なる場合があります。
コマンドラインから直接設定する
PORT=4000 node app.js
- 解説
PORT=4000
の部分で、環境変数PORT
に4000
という値を一時的に設定します。node app.js
で、app.js
というNode.jsのスクリプトを実行します。- このコマンドを実行すると、
app.js
内のprocess.env.PORT
は4000
という値を参照します。
コード内で設定する
process.env.PORT = '5000';
- 解説
- JavaScriptのコード内で、
process.env.PORT
に直接'5000'
という値を代入します。
- JavaScriptのコード内で、
環境変数ファイル(.env)を使用する (dotenvモジュールを使う場合)
// app.js
require('dotenv').config();
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
# .env
PORT=3001
- 解説
dotenv
モジュールをインストールし、require('dotenv').config();
で.env
ファイルを読み込みます。.env
ファイルにPORT=3001
と記述することで、process.env.PORT
に3001
という値が設定されます。- コード内で
process.env.PORT
を参照し、port
変数に代入します。 || 3000
の部分は、process.env.PORT
が未定義の場合に3000
というデフォルト値を使用するための条件演算子です。
各コード例のポイント
- .envファイル
複数の環境で異なる設定を使用したい場合や、機密情報を外部化したい場合に適しています。 - コード内
コード内で動的にポート番号を変更したい場合に便利です。 - コマンドライン
一時的な変更やスクリプト実行時のみに有効です。
具体的な使用例
- Herokuなどのクラウドプラットフォームでデプロイする場合
- クラウドプラットフォームの設定画面で環境変数を設定し、
process.env.PORT
を参照することで、自動的にポート番号が割り当てられます。
- クラウドプラットフォームの設定画面で環境変数を設定し、
- 開発環境と本番環境で異なるポート番号を使用する場合
- 開発環境では
.env.development
、本番環境では.env.production
というファイルを作成し、それぞれ異なるポート番号を設定します。 dotenv
モジュールを使って適切なファイルを読み込むようにします。
- 開発環境では
Node.jsでprocess.env.PORT
の値を変更する方法は、状況に応じて使い分けることができます。どの方法を選ぶかは、プロジェクトの規模や複雑さ、チームの開発スタイルなどによって異なります。
.env
ファイルは、Gitなどのバージョン管理システムに含めないように注意してください。- 環境変数の値は、システムの環境設定や実行中のシェルなどによって異なる場合があります。
process.env
オブジェクトには、PORT
以外にも様々な環境変数が格納されています。
より詳しく知りたい場合は、以下のキーワードで検索してみてください
- Heroku 環境変数
- ポート番号
- dotenv
- Node.js 環境変数
コマンドライン引数を使う
const yargs = require('yargs');
const argv = yargs.argv;
const port = argv.port || process.env.PORT || 3000;
-
実行例
node app.js --port=4000
-
解説
yargs
モジュールを使って、コマンドライン引数を解析します。argv.port
で、コマンドラインから--port
オプションで指定された値を取得します。process.env.PORT
が設定されていれば、その値を優先し、どちらも設定されていない場合はデフォルトの3000
を使用します。
環境変数ファイルのフォーマットを変更する
-
dotenv
モジュール以外にも、様々な環境変数ファイルの解析モジュールがあります。- 自分のプロジェクトに合ったフォーマットを選択できます。
-
dotenv-parse
const dotenvParse = require('dotenv-parse'); const config = dotenvParse(fs.readFileSync('.env')); process.env.PORT = config.PORT;
-
YAML形式
# .env.yaml PORT: 3002
-
JSON形式
// .env.json { "PORT": "3001" }
プロセスマネージャーを使う
-
PM2
などのプロセスマネージャーは、アプリケーションの起動、監視、再起動などを自動化します。ecosystem.config.js
ファイルで環境変数を設定することができます。
-
PM2
// ecosystem.config.js module.exports = { apps : [{ name: 'my-app', script: 'app.js', env: { PORT: 3003 } }] };
クラウドプラットフォームの機能を使う
- AWS
- Heroku
どの方法を選ぶべきか
- クラウドプラットフォーム
クラウドプラットフォームの機能を活用することで、より簡単に環境変数を管理できます。 - 自動化
プロセスマネージャーは、アプリケーションのデプロイや管理を自動化したい場合に便利です。 - 管理性
環境変数ファイルは、複数の環境で異なる設定を使用する場合に便利です。 - 柔軟性
コマンドライン引数は、実行時に柔軟にポート番号を変更したい場合に便利です。
選ぶ際のポイント
- 保守性
将来的にメンテナンスしやすい方法を選ぶ - 可読性
コードの可読性を高める - シンプルさ
できるだけシンプルな方法を選ぶ
- 機密情報を含む環境変数は、
.gitignore
に追加してバージョン管理から除外するようにしましょう。 - 環境変数の値は、セキュリティ上の観点から注意が必要です。
- AWS 環境変数
- yargs
node.js environment-variables