我在我的服务器上运行了一个Node.js/Express.js应用程序,它只能在端口3000上运行,我正在尝试找出原因。这是我发现的:
app.listen()
)的情况下,应用程序会运行,但网页不会加载。app.listen(3001)
)或任何其他未使用的端口上,应用程序会运行,但网页不会加载。我知道Express应用程序默认使用端口3000。但奇怪的是,我的应用程序只有在显式地使其在端口3000 (app.listen(3000)
)上运行时才能运行。
我在/usr/bin/express
的第220行找到了这个
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);
发布于 2013-08-03 03:29:48
如果您的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
之间进行划分,而且许多平台即服务也使用该环境来根据它们的规范以及内部快速配置来设置端口。下面设置一个环境key=value对,然后启动您的应用程序。
$ 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'));
发布于 2016-04-07 10:28:51
在bin/www
中,有一行:
var port = normalizePort(process.env.PORT || '3000');
试着修改它。
发布于 2013-08-02 12:09:17
尝尝这个
$ PORT=8080 node app.js
https://stackoverflow.com/questions/18008620
复制相似问题