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를 설정 하여 웹 서버에 수신 대기 할 포트를 알려줄 수 있습니다.

따라서 process.env.PORT || 3000환경 변수 PORT에있는 것이 무엇이든, 아무것도 없다면 3000입니다.

따라서 app.listen또는로 전달 app.set('port', ...)하면 서버가 환경에서 수신 대기하는 포트의 매개 변수를 수락 할 수 있습니다.

3000하드 코딩 된 것을 전달 app.listen()하면 항상 포트 3000에서 수신하는 것입니다. 포트는 서버를 실행하는 환경의 요구 사항과 요구 사항에 따라 사용자에게 적합하거나 그렇지 않을 수 있습니다.


74
  • 당신이 실행하면 node index.js, 노드는3000

  • 를 실행하면 이 예제에서 와 동일한 PORT=4444 node index.js노드가 사용됩니다 . 1024 미만의 포트 에 대해 실행하십시오 .process.env.PORT4444sudo


13
Windows 시스템에서 이것을 사용하는 경우, 먼저 PORT 변수를 "set PORT = 3300"으로 설정 한 후 다음 명령에서 node.js를 실행하면 3000 대신 3300으로 포트가 사용됩니다. .
Aakash 자이나교

35

다른 서비스 (예 : Heroku, Nodejitsu 및 AWS)에서 애플리케이션을 호스팅 할 때 호스트가 process.env.PORT변수를 독립적으로 구성 할 수 있습니다. 결국 스크립트는 환경에서 실행됩니다.

Amazon의 Elastic Beanstalk가이를 수행합니다. 3000이 고정 설정이 3000아닌 고정 포트 값을 설정하려고하면 process.env.PORT || 3000Amazon에서 포트를 구성하기 때문에 애플리케이션에 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
ES6를 지원하는 Node.js 내에서 더 짧게 작성할 수 있습니다.const {PORT = 3000} = process.env
Julian

1
@아빠. 프로덕션 환경에서 process.env.port가 발견되면 PA가 없으므로 포트는 그 값을 얻습니다. 이 작업은 왼쪽에서 오른쪽으로 읽고 사용 가능한 첫 번째 값에서 멈 춥니 다.
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.