当前位置: 首页 > 知识库问答 >
问题:

node.js/express.js应用程序仅在端口3000上工作

宗政财
2023-03-14

我的服务器上运行了一个node.js/express.js应用程序,它只在3000端口上工作,我正在试图找出原因。以下是我的发现:

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

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

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

app.set(\'port\', process.env.PORT || 3000);

该操作如前所述:将端口设置为指定的内容,如果未指定任何内容,则设置为3000。

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

谢谢!

编辑:代码示例(非常简单的节点/Express App)

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

共有1个答案

於功
2023-03-14

如果您的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

或者,使用您的环境来设置端口。通过环境设置它是用来帮助在生产开发之间划定界限的,而且许多平台即服务使用环境根据它们的规范和内部的Express配置来设置端口。下面设置一个environment 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'));
 类似资料:
  • 问题内容: 我在服务器上运行了一个Node.js / Express.js应用程序,该应用程序仅在端口3000上运行,我试图找出原因。这是我发现的: 如果不指定端口(),则该应用会运行,但网页不会加载。 在端口3001()或任何其他未使用的端口上,应用程序运行,但网页未加载。 在端口2999上,该应用程序引发错误,因为其他人正在使用该端口。 在端口3000上,该应用程序运行,并且网页加载正常。 我

  • 问题内容: 说我有这段代码来分隔expressjs中的路由: 并要求在: 1)如何以最佳方式将数据库查询分为新文件? 即使我分开数据库逻辑,该文件也会变得很大。 2)什么是分隔路线的好方法?也许是单独的模块?然后要求他们都参加? 问题答案: 这里有一个类似的问题,您应该阅读:如何构建express.js应用程序? 1)您所有的查询逻辑都应放在模型中(例如,位于/ models中的模块) 2)将您的

  • 在本地测试它工作。在不同的端口(3001,8080) 但在测试服务器 (Azure) 上 我在同一台机器上运行2个Node App实例 和 但它只在3000端口上工作。 如何在Express中设置不同的端口? 现在,我已经在索引上的app.listen(3001)上进行了更改.js它不起作用。

  • 问题内容: 我注意到,几乎所有Express.js应用程序示例都使用端口3000作为HTTP服务器的默认侦听端口。这仅仅是因为它是一个很少使用的端口,还是该端口号有其他原因吗? 如果要在本地计算机上并行运行多个应用程序,使用3000、3001、3002等端口是否是一种好习惯? (我理解,理想情况下,您应该让系统分配端口。出于简单起见,这只是一个问题,为什么3000似乎是常规分配。) 问题答案: 选

  • 我有一个节点。js Express web应用程序使用默认端口3000,通过弹性ip在Ubuntu EC2实例上响应良好。我试图在AWS中设置内置的负载平衡,但似乎无法通过良好的运行状况检查 安装2个ubuntu服务器,服务器应用程序罚款在端口3000. 将端口80的负载平衡器侦听器设置为路由到实例端口3000,并尝试将3000路由到3000。 将amazon-elb/amazon-elb-sg安

  • 我一直在关注这个(http://socket.io/get-started/chat/)关于如何使用socket.io制作简单聊天应用程序的教程。 但是,我尝试使用Express创建它,我想知道为什么端口3000已经在使用中?除非我更改端口号,否则下面的代码将无法工作。 express是不是用端口做路由之类的其他事情?有没有一种简单的方法可以发现该端口上发生了什么? 我也可能对我需要的东西做了一些