当前位置: 首页 > 面试题库 >

如何动态设置快递服务器的端口?

徐俊人
2023-03-14
问题内容

这是初学者最常问的问题,因为我刚开始时就有这个问题

_如何在 不进行硬编码甚至自行选择端口的情况下设置用于 表达的
端口?_这是我从节点开始并表达时遇到的问题(我仍然是一个初学者,有很多东西要学习)。除了其他我想知道的事情,

  • 在中 使用app.set('port', portNum)和直接使用端口号有什么 区别app.listen(portNum)

问题答案:

选项1:环境变量(推荐

通常,您会将您的应用程序部署到Heroku等托管服务提供商。根据主机的配置方式,系统将动态设置环境变量,您的应用将需要从此变量获取端口。例如,托管提供程序在运行您的应用程序时可能会运行以下命令:

$ PORT=1234 npm start

…并且在代码中,您可以像下面这样访问此变量:

const port = process.env.PORT;
app.listen(port);

专家提示: 大多数托管服务提供商也允许您定义自定义环境变量。您可以通过创建以下任意变量在本地进行测试:

$ FOO=bar ADMIN_EMAIL=joe@example.com npm start

…并从如下代码访问这些变量:

const foo = process.env.FOO;                  //-> "bar"
const adminEmail = process.env.ADMIN_EMAIL;   //-> "joe@example.com"

选项2-特定于环境的配置文件(也强烈建议)

使用配置库中像这样一个可以让你有特定环境的配置选项。您的文件夹结构如下所示(注意文件名):

|- config
   |- default.json
   |- testing.json
   |- production.json
|- src
   |- app.js

然后定义“默认”变量和特定于环境的变量:

default.json

{
    "port": "3030",
    "adminEmail": "dev@example.com"
}

testing.json

{
    "port": "5555"
}

production.json

{
    "adminEmail": "admin@example.com"
}

配置库将始终使用 默认 变量。在 测试时 ,它将使用默认的管理员电子邮件和其他端口。在 生产时
,它将使用默认端口,但使用不同的管理员电子邮件。定义“节点环境”的方式是这样的(注意,我们使用与JSON配置文件相同的名称):

$ NODE_ENV=testing npm start
$ NODE_ENV=production npm start

专家提示: 您的配置文件也可以引用环境变量!继续上面选项1中的示例,您可以这样定义生产配置:

production.json

{
    "port": "PORT"
}

配置库将查找名为“ PORT”的任何环境变量,并将使用该值。综上所述,运行应用程序的最终命令可能如下所示:

$ NODE_ENV=production PORT=47861 npm start

2.在中使用app.set('port', portNum)和直接使用端口号有什么区别app.listen(portNum)

Express允许您使用app.set- 设置应用程序变量,但这只是定义变量的一种好方法。您稍后可以使用来获取这些变量的值app.get

迟早,您将需要告诉您的应用监听特定端口上的流量。您可以执行以下操作:

const app = express();
app.set('port', process.env.PORT);

app.use((req, res) => { ... });
app.listen(app.get('port'));


 类似资料:
  • 我想部署我的微服务的几个实例,它们使用特定的端口,但使其可伸缩,并且不在任务定义/dockerfile中修复端口。我的微服务可以监听环境变量或命令行中提供的端口。

  • 问题内容: 我有一个目录结构 我想启动我的应用并与节点一起使用。所以我有: 在我的底部: 当我启动服务器时,显示出来,但以上库均未加载。我收到错误消息(404): 如何提供来自bower_components的文件? 问题答案: 我使用以下设置: 因此,任何Bower组件都是从HTML加载的,如下所示: 以及其他所有客户端JS / CSS(在中)的加载方式如下:

  • 问题内容: 因此,已经有一个必须在控制台上运行的Python程序设置了。我将使用Javascript为应用程序构建Web GUI界面。我将如何: 一种。开始处理此Python程序的输入/输出,而无需触摸原始代码。 b。通过Javascript调用将控制台输入发送到Python程序。我已经研究了原始的HTTP请求/ AJAX,但不确定如何将其作为输入发送到Python程序。 问题答案: 一种。处理程

  • 更新后,我在Ubuntu服务器上部署codeigniter项目时遇到了一些问题,当我点击链接时,我发现404 Apache错误。 当我把项目放进去的时候http://roy.my-domain.com/ =/var/www/html/folder-一切正常-但当我添加子目录时http://roy.my-domain.com/roy/ =/var/www/html/roy/-我收到404个错误。 当

  • Debug 字段 该设置默认值是 false,当发生错误时,只返回错误信息本身。 当该字段设置为 true 时,当发生 panic 时,会将整个 panic 的错误堆栈信息返回给客户端,在用户进行 hprose 服务开发时,该设置可以帮助你快速定位错误位置。 ErrorDelay 字段 该设置为整型值,默认值为 10 秒。 该字段表示在调用执行时,如果发生异常,将延时一段时间后再返回给客户端。 在

  • 问题内容: 我使用以下行启动了node.js服务器来设置端口: 这意味着,它应该像本地运行时那样读取PORT env变量或默认为8080。它们都不在Heroku上发生,并且服务器始终使用默认端口80。如何更改该端口? 问题答案: 你不能 Heroku设置您应该绑定的PORT变量,并在tcp / 80上进行侦听。