process.env.PORT || 3000在Node.js中用于什么?我在什么地方看到过这个:

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

如果使用3000作为监听端口,我可以用这个代替吗?

app.listen(3000);

如果不是,为什么?


当前回答

在许多环境中(例如Heroku),作为一种惯例,你可以设置环境变量PORT来告诉你的web服务器监听哪个端口。

process.env.PORT || 3000的意思是:环境变量PORT中的任何东西,如果没有,则是3000。

所以你把它传递给app.listen,或者app.set('port',…),这使得你的服务器能够接受来自环境的“监听哪个端口”参数。

如果将3000硬编码传递给app.listen(),则始终在监听端口3000,这可能只适合您,也可能不适合,这取决于您的需求和运行服务器的环境的需求。

其他回答

Dotenvis是一个零依赖模块,它将环境变量从.env文件加载到process.env中。在与代码分开的环境中存储配置是基于十二因素应用程序方法的。

与npm

NPM安装dotenv

或用纱线

纱线加dotenv

使用

在应用程序中尽可能早地要求并配置dotenv。

要求(' dotenv ') . config ()

首先在文件资源管理器中创建一个.env文件,并在其中写入:

端口:8080

const http = require("http");

require("dotenv").config();

let port = process.env.PORT;
let host = process.env.HOST;

let server = http.createServer((req, res) => {
  console.log("Thanks for the request");
  res.writeHead(200, { "Content-Type": "text/plain" });
  res.end("You Rock");
});

server.listen(port, host, () => {
  console.log(`Server is listening ${host}:${port}`);
});

在许多环境中(例如Heroku),作为一种惯例,你可以设置环境变量PORT来告诉你的web服务器监听哪个端口。

process.env.PORT || 3000的意思是:环境变量PORT中的任何东西,如果没有,则是3000。

所以你把它传递给app.listen,或者app.set('port',…),这使得你的服务器能够接受来自环境的“监听哪个端口”参数。

如果将3000硬编码传递给app.listen(),则始终在监听端口3000,这可能只适合您,也可能不适合,这取决于您的需求和运行服务器的环境的需求。

当你的应用程序托管在另一个服务(如Heroku, Nodejitsu和AWS)上时,你的主机可以独立地为你配置process.env.PORT变量;毕竟,您的脚本在他们的环境中运行。

亚马逊的Elastic Beanstalk就做到了这一点。如果您试图设置一个静态端口值,例如3000,而不是process.env.PORT || 3000,其中3000是您的静态设置,那么您的应用程序将导致一个500网关错误,因为Amazon正在为您配置端口。

这是一个最小的Express应用程序,将部署在Amazon的Elastic Beanstalk上:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

// use port 3000 unless there exists a preconfigured port
var port = process.env.PORT || 3000;

app.listen(port);

process.env.PORT || 3000表示:process.env.PORT表示手动设置的端口号。默认端口为3000。如果你没有手动设置它,那么它将监听3000。

app.set('port', process.env.PORT || 3000)或app.listen(3000)在你的代码中的意思是一样的。它只说什么端口应该监听作为参数从环境。

3000是传递给app.listen()的硬编码参数,这意味着当你运行后端代码时,你总是会在端口3000上监听,这可能适合你,也可能不适合,这取决于你的需求和服务器运行环境的需求。

如果你运行node index.js, node将使用3000 如果你运行PORT=4444节点索引.js, node将使用process.env.PORT,在本例中它等于4444。对于1024以下的端口,使用sudo运行。