Node.jsのprocess.env.PORTとは何ですか?


175

process.env.PORT || 3000Node.jsでは何が使用されますか?私はこれをどこかで見ました:

 app.set('port', process.env.PORT || 3000);

3000リスニングポートとして設定するために使用する場合、代わりに使用できますか?

app.listen(3000);

なぜではないのですか?

回答:


237

多くの環境(Herokuなど)では、慣例として、環境変数PORTを設定して、Webサーバーにリッスンするポートを指示できます。

つまりprocess.env.PORT || 3000、環境変数PORTにあるものは何でも、何もない場合は3000です。

したがって、、app.listenまたはに渡すと、app.set('port', ...)サーバーは、どのポートをリッスンする環境からのパラメータを受け入れることができるようになります。

3000ハードコードをに渡すapp.listen()と、要件とサーバーを実行している環境の要件に応じて、ポート3000が常にリッスンされます。


74
  • 実行するとnode index.js、Nodeは3000

  • を実行するとPORT=4444 node index.js、Nodeはこの例のprocess.env.PORTwhichに等しい値を使用します4444sudo1024未満のポートで実行します。


13
これをWindowsマシンで使用している場合、最初にPORT変数を「set PORT = 3300」として設定する必要があります。次に、次のコマンドでノードserver.jsを実行すると、ポートが3000ではなく3300になります。 。
Aakashジャイナ

35

アプリケーションを別のサービス(Heroku、Nodejitsu、AWSなど)でホストする場合、ホストがprocess.env.PORT変数を個別に構成する場合があります。結局のところ、スクリプトはその環境で実行されます。

AmazonのElastic Beanstalkがこれを行います。3000が静的設定の3000代わりに静的ポート値を設定しようとするとprocess.env.PORT || 3000、Amazonがポートを構成しているため、アプリケーションで500ゲートウェイエラーが発生します。

これは、AmazonのElastic Beanstalkにデプロイされる最小限のExpressアプリケーションです。

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

// use port 3000 unless there exists a preconfigured port
var port = process.env.port || 3000;

app.listen(port);

1
Node.jsのはES6を支える内ではさらに短く書くことができます:const {PORT = 3000} = process.env
ジュリアン

1
@PA。実稼働環境でprocess.env.portが見つかった場合はPAがないため、portはその値を取得します。この操作は左から右に読み取られ、使用可能な最初の値があれば停止します。
HoCo_

11

一部のシナリオでportは、環境によってのみ指定でき、ユーザー環境変数に保存されます。以下は、node.jsアプリがどのように機能するかです。

processオブジェクトは、過電流のNode.jsプロセスに関する情報、及び制御を提供するグローバルです。グローバルとして、これはNode.jsアプリケーションで常に使用できますrequire()

process.envプロパティは、ユーザーの環境を含むオブジェクトを返します。

このオブジェクトの例は次のようになります。

{
  TERM: 'xterm-256color',
  SHELL: '/usr/local/bin/bash',
  USER: 'maciej',
  PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
  PWD: '/Users/maciej',
  EDITOR: 'vim',
  SHLVL: '1',
  HOME: '/Users/maciej',
  LOGNAME: 'maciej',
  _: '/usr/local/bin/node'
}

例えば、

端末:永続的ではなく、新しいユーザー環境変数を設定します

export MY_TEST_PORT=9999

app.js:ノードアプリから新しい環境変数を読み取ります

console.log(process.env.MY_TEST_PORT)

端末:ノードアプリを実行して値を取得する

$ node app.js
9999
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.