首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.js/Express.js应用程序只能在端口3000上运行

Node.js/Express.js应用程序只能在端口3000上运行
EN

Stack Overflow用户
提问于 2013-08-02 12:06:15
回答 16查看 255.5K关注 0票数 107

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

  • 在不指定端口(app.listen())的情况下,应用程序会运行,但网页不会加载。
  • 在端口3001 (app.listen(3001))或任何其他未使用的端口上,应用程序会运行,但网页不会加载。
  • 在端口2999上,应用程序会抛出错误,因为其他程序正在使用该端口。
  • 在端口3000上,应用程序运行且网页加载正常。

我知道Express应用程序默认使用端口3000。但奇怪的是,我的应用程序只有在显式地使其在端口3000 (app.listen(3000))上运行时才能运行。

我在/usr/bin/express的第220行找到了这个

代码语言:javascript
运行
复制
app.set(\'port\', process.env.PORT || 3000);

如前所述:将端口设置为指定的端口;如果未指定端口,则将端口设置为3000。

我如何让我的应用程序在不同的端口上工作,比如8080或3001?

谢谢!

编辑:代码示例(非常简单的节点/快速应用程序)

代码语言:javascript
运行
复制
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);
EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2013-08-03 03:29:48

如果您的app.js中包含类似以下内容,则可以执行以下操作:

代码语言:javascript
运行
复制
http.createServer(app).listen(app.get('port'),
  function(){
    console.log("Express server listening on port " + app.get('port'));
});

或者显式地硬编码您的代码以使用您想要的端口,例如:

代码语言:javascript
运行
复制
app.set('port', process.env.PORT || 3000);

这段代码意味着将您的端口设置为环境变量PORT,或者如果是undefined,则将其设置为文字3000

或者,使用您的环境设置端口。通过环境设置它用于帮助在PRODUCTIONDEVELOPMENT之间进行划分,而且许多平台即服务也使用该环境来根据它们的规范以及内部快速配置来设置端口。下面设置一个环境key=value对,然后启动您的应用程序。

代码语言:javascript
运行
复制
$ PORT=8080 node app.js

参考您的代码示例,您需要类似以下内容:

代码语言:javascript
运行
复制
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'));
票数 130
EN

Stack Overflow用户

发布于 2016-04-07 10:28:51

bin/www中,有一行:

代码语言:javascript
运行
复制
var port = normalizePort(process.env.PORT || '3000');

试着修改它。

票数 34
EN

Stack Overflow用户

发布于 2013-08-02 12:09:17

尝尝这个

代码语言:javascript
运行
复制
$ PORT=8080 node app.js
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18008620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档