포트 3000에서만 작동하는 내 서버에서 실행되는 Node.js / Express.js 앱이 있는데 그 이유를 알아 내려고합니다. 내가 찾은 내용은 다음과 같습니다.
- 포트 (
app.listen()
)를 지정하지 않으면 앱이 실행되지만 웹 페이지가로드되지 않습니다. - 포트 3001 (
app.listen(3001)
) 또는 사용하지 않는 다른 포트에서 앱은 실행되지만 웹 페이지는로드되지 않습니다. - 포트 2999에서 다른 항목이 해당 포트를 사용하고 있기 때문에 앱에서 오류가 발생합니다.
- 포트 3000에서 앱이 실행되고 웹 페이지가 정상적으로로드됩니다.
Express 앱은 기본적으로 포트 3000이라는 것을 알고 있습니다.하지만 이상하게도 내 앱은 명시 적으로 포트 3000 ( app.listen(3000)
) 에서 실행될 때만 실행됩니다 .
다음의 220 행에서 이것을 찾았습니다 /usr/bin/express
.
app.set(\'port\', process.env.PORT || 3000);
이전에 언급 한대로 수행되는 작업 : 포트를 지정된 값으로 설정하거나 아무것도 지정하지 않은 경우 3000으로 설정합니다.
내 앱이 8080 또는 3001과 같은 다른 포트에서 작동하도록하려면 어떻게해야합니까?
감사!
편집 : 코드 샘플 (매우 간단한 노드 / 익스프레스 앱)
var express = require("express");
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
// Only works on 3000 regardless of what I set environment port to or how I set [value] in app.set('port', [value]).
app.listen(3000);
답변
다음은 app.js에 이와 같은 내용이있는 경우 작동합니다.
http.createServer(app).listen(app.get('port'),
function(){
console.log("Express server listening on port " + app.get('port'));
});
다음과 같이 원하는 포트를 사용하도록 코드를 명시 적으로 하드 코딩하십시오.
app.set('port', process.env.PORT || 3000);
이 코드는 포트를 환경 변수 로 설정 PORT
하거나 undefined
그런 다음 리터럴로 설정하는 것을 의미합니다 3000
.
또는 환경을 사용하여 포트를 설정하십시오. 환경을 통해 설정하는 사이 도움말 묘사하는 데 사용됩니다 PRODUCTION
및 DEVELOPMENT
자신의 스펙과 내부 익스프레스 CONFIGS에 따라 포트를 설정하고 또한 서비스로 플랫폼의 많은 환경을 사용합니다. 다음은 환경 키 = 값 쌍을 설정 한 다음 앱을 시작합니다.
$ PORT=8080 node app.js
코드 예제와 관련하여 다음과 같은 것을 원합니다.
var express = require("express");
var app = express();
// sets port 8080 to default or unless otherwise specified in the environment
app.set('port', process.env.PORT || 8080);
app.get('/', function(req, res){
res.send('hello world');
});
// Only works on 3000 regardless of what I set environment port to or how I set
// [value] in app.set('port', [value]).
// app.listen(3000);
app.listen(app.get('port'));
답변
에는 다음 bin/www
과 같은 줄이 있습니다.
var port = normalizePort(process.env.PORT || '3000');
그것을 수정하십시오.
답변
이 시도
$ PORT=8080 node app.js
답변
bin> www 위치를 찾아서 포트 번호를 변경해보십시오.
답변
Express 프레임 워크에서 수신 포트를 변경하는 기본 방법은 bin 폴더에서 www라는 파일을 수정하는 것입니다.
거기에 다음과 같은 줄이 있습니다.
var port = normalizePort(process.env.PORT || '3000');
값 3000을 원하는 포트로 변경하십시오.
이것은 Express 버전 4.13.1에 유효합니다.
답변
Mac OS X 및 Linux 사용자를위한 참고 사항 :
1024보다 낮은 포트 번호에서 Node / Express 앱을 실행하려면 수퍼 유저로 실행해야합니다.
sudo PORT=80 node app.js
답변
express-generator (4.13.1)가있는 최신 버전의 코드에서 app.js는 내 보낸 모듈이며 서버는 app.set ( ‘port’, process.env.PORT || 3001)을 사용하여 / bin / www에서 시작됩니다. app.js에서 bin / www의 유사한 문으로 재정의됩니다. 방금 bin / www에서 진술을 변경했습니다.