Ben*_*tin 91 javascript port configuration node.js express
我在我的服务器上运行了一个Node.js/Express.js应用程序,它只适用于端口3000,我试图找出原因.这是我发现的:
app.listen()
),则应用程序会运行,但不会加载网页.app.listen(3001)
)或任何其他未使用的端口上,应用程序运行但网页未加载.我知道Express应用程序默认为端口3000.但奇怪的是,我的应用程序仅在我明确让它在端口3000(app.listen(3000)
)上运行时运行.
我在第220行找到了这个/usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
Run Code Online (Sandbox Code Playgroud)
这是如前所述:将端口设置为指定的端口,如果未指定任何内容,则设置为3000.
如何让我的应用程序在8080或3001等不同的端口上运行?
谢谢!
编辑:代码示例(非常简单的节点/ Express应用程序)
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);
Run Code Online (Sandbox Code Playgroud)
Ehe*_*Tov 109
如果您的app.js中有类似的内容,则以下情况有效:
http.createServer(app).listen(app.get('port'),
function(){
console.log("Express server listening on port " + app.get('port'));
});
Run Code Online (Sandbox Code Playgroud)
显式硬编码代码以使用您想要的端口,例如:
app.set('port', process.env.PORT || 3000);
Run Code Online (Sandbox Code Playgroud)
此代码表示将端口设置为环境变量,PORT
或者如果是,undefined
则将其设置为文字3000
.
或者,使用您的环境设置端口.通过环境进行设置用于帮助描述PRODUCTION
和之间以及DEVELOPMENT
许多平台即服务使用环境根据其规范以及内部Express配置来设置端口.以下设置环境键=值对,然后启动您的应用程序.
$ PORT=8080 node app.js
Run Code Online (Sandbox Code Playgroud)
在参考您的代码示例时,您需要以下内容:
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'));
Run Code Online (Sandbox Code Playgroud)
Lar*_* Lu 27
在bin/www
,有一条线:
var port = normalizePort(process.env.PORT || '3000');
Run Code Online (Sandbox Code Playgroud)
尝试修改它.
更改Express框架上的侦听端口的默认方法是修改bin文件夹中名为www的文件.
在那里,你会发现如下所示的一行
var port = normalizePort(process.env.PORT || '3000');
Run Code Online (Sandbox Code Playgroud)
将值3000更改为您希望的任何端口.
这适用于Express 4.13.1版