[javascript] Node.js / Express.js 앱은 포트 3000에서만 작동합니다.

포트 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.

또는 환경을 사용하여 포트를 설정하십시오. 환경을 통해 설정하는 사이 도움말 묘사하는 데 사용됩니다 PRODUCTIONDEVELOPMENT자신의 스펙과 내부 익스프레스 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에서 진술을 변경했습니다.