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