답변:
많은 환경 (예 : Heroku)에서 규칙으로 환경 변수 PORT
를 설정 하여 웹 서버에 수신 대기 할 포트를 알려줄 수 있습니다.
따라서 process.env.PORT || 3000
환경 변수 PORT에있는 것이 무엇이든, 아무것도 없다면 3000입니다.
따라서 app.listen
또는로 전달 app.set('port', ...)
하면 서버가 환경에서 수신 대기하는 포트의 매개 변수를 수락 할 수 있습니다.
에 3000
하드 코딩 된 것을 전달 app.listen()
하면 항상 포트 3000에서 수신하는 것입니다. 포트는 서버를 실행하는 환경의 요구 사항과 요구 사항에 따라 사용자에게 적합하거나 그렇지 않을 수 있습니다.
다른 서비스 (예 : 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);
const {PORT = 3000} = process.env
일부 시나리오에서는 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