Node.js / Express.js应用仅在端口3000上运行

我在服务器上运行了一个Node.js / Express.js应用程序,该应用程序仅在端口3000上运行,我试图找出原因。这是我发现的:

  • 如果不指定端口(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许多“平台即服务”都使用环境根据其规格以及内部Express配置来设置端口。以下设置环境键=值对,然后启动您的应用程序。

$ 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'));

以上是 Node.js / Express.js应用仅在端口3000上运行 的全部内容, 来源链接: utcz.com/qa/411428.html

回到顶部