什么是Node.js中的process.env.PORT?

use*_*r-S 150 port node.js express

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

 app.set('port', process.env.PORT || 3000);
Run Code Online (Sandbox Code Playgroud)

如果它用于设置3000为侦听端口,我可以使用它吗?

app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

如果不是为什么?

Nit*_*ked 205

在许多环境(例如Heroku)中,作为约定,您可以设置环境变量PORT以告知Web服务器要侦听的端口.

所以process.env.PORT || 3000意味着:环境变量PORT中的任何内容,如果没有任何内容,则为3000.

所以你传递它app.listen,或者传递给它app.set('port', ...),这使你的服务器能够从环境中接受一个要监听的端口的参数.

如果您通过3000硬编码app.listen(),您总是在侦听端口3000,这可能只适合您,具体取决于您的要求以及运行服务器的环境要求.


Abd*_*UMI 62

  • 如果你运行node index.js,Node将使用3000

  • 如果您运行PORT=4444 node index.js,Node将在此示例中使用process.env.PORT等于4444.sudo对于低于1024的端口运行.

  • 如果你在windows机器中使用它,首先你必须将PORT变量设置为"set PORT = 3300",然后在下一个命令中,如果你运行节点server.js,它将把端口视为3300而不是3000 . (13认同)
  • PORT不被识别为内部或外部命令. (3认同)

Thi*_*ark 28

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

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

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

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);
Run Code Online (Sandbox Code Playgroud)

  • 在支持 ES6 的 Node.js 中,你可以写得更短:`const {PORT = 3000} = process.env` (3认同)

the*_*eld 5

在某些情况下,port只能由环境指定,并保存在用户环境变量中。以下是node.js应用如何使用它。

process对象是全局的,提供有关当前Node.js进程的信息并对其进行控制。全局而言,它始终可用于Node.js应用程序,而无需使用require()

process.env属性返回一个包含用户环境的对象。

该对象的示例如下所示:

{
  TERM: 'xterm-256color',
  SHELL: '/usr/local/bin/bash',
  USER: 'maciej',
  PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
  PWD: '/Users/maciej',
  EDITOR: 'vim',
  SHLVL: '1',
  HOME: '/Users/maciej',
  LOGNAME: 'maciej',
  _: '/usr/local/bin/node'
}
Run Code Online (Sandbox Code Playgroud)

例如,

terminal:设置一个新的用户环境变量,不是永久的

export MY_TEST_PORT=9999
Run Code Online (Sandbox Code Playgroud)

app.js:从节点应用程序读取新的环境变量

console.log(process.env.MY_TEST_PORT)
Run Code Online (Sandbox Code Playgroud)

终端:运行节点应用程序并获取值

$ node app.js
9999
Run Code Online (Sandbox Code Playgroud)