我有一个 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?

谢谢

Edit: Code Sample (Very Simple Node/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);

推荐答案

如果你的应用程序中有类似的东西,下面的方法很有效.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.

或者,使用您的环境设置端口.通过环境设置端口有助于划分PRODUCTIONDEVELOPMENT之间的范围,许多平台作为服务使用环境根据其规格以及内部Express配置设置端口.下面设置一个环境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相关问答推荐

如何将信号从终端窗口发送到运行在Raspberry Pi上的Puppeteer/Node.js上的webscraper

DocuSign:调用createEntaine时,RequestJWTApplicationToken返回401 AUTHORIZATION_INVALID_TOKEN

使用参考中断Mongoose模型-Node.js

我需要聚合两个 MongoDB 集合

$not 的聚合版本是什么?

在 Node JS 中使用 url 链接而不是文件路径

Node.js |如何在微服务之间转发标头?

2 x 匹配标准显示没有结果

users.watch(在 gmail google api 中)如何收听通知?

使用 mongoose 查找过go 7 天的注册用户总数

如何申请在NextJS上下载文件的许可?

如何在 node.js 环境中从 WebAssembly (Rust) 调用异步 JavaScript 导入函数?

如何在 Node.js 中逐字节读取二进制文件

构建 vue cli 后如何运行生产站点

如何从 Redis 保存和检索会话

使用 Socket.io 将客户端连接到服务器

有人在 NodeJS 中实现过 wiki 吗?

Mongoose - 保存字符串数组

Meteor - collection.find() 总是返回所有字段

Npm postinstall 仅用于开发