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

时间:2013-09-18 05:42:44

标签: node.js express port

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

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

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

app.listen(3000);

如果不是为什么?

6 个答案:

答案 0 :(得分:189)

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

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

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

如果您将3000硬编码传递给app.listen(),那么您总是在侦听端口3000,这可能只适合您,具体取决于您的要求和环境要求你正在运行你的服务器。

答案 1 :(得分:58)

  • 如果您运行node index.js,则节点将使用3000

  • 如果您运行PORT=4444 node index.js,则此示例中的节点将使用等于process.env.PORT的{​​{1}}。使用4444运行1024以下的端口。

答案 2 :(得分:26)

在其他服务(如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);

答案 3 :(得分:4)

在某些情况下,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'
}

例如,

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

export MY_TEST_PORT=9999

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

console.log(process.env.MY_TEST_PORT)

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

$ node app.js
9999

答案 4 :(得分:0)

是什么 Node会在运行时注入process.env全局变量,以供您的应用程序使用,它代表应用程序启动时所处系统环境的状态。例如,如果系统设置了PATH变量,则可以通过process.env.PATH对其进行访问,您可以使用它来检查二进制文件的位置,并在需要时对其进行外部调用。

答案 5 :(得分:0)

const readGlucose = (id, serviceUUID, charasteristicUUID) => { BleManager.read(id, serviceUUID, charasteristicUUID) .then(res => { console.log('read response', res); // [229, 7, 7, 27, 12, 19, 0] if (res) { const buffer = Buffer.from(res); const data = buffer.toString(); console.log('data', data); // �♀‼ } }) .catch(error => { console.log('read err', error); }); 是一个零依赖模块,可将 .env 文件 中的环境变量加载到 process.env。 将配置存储在与代码分开的环境中基于十二要素应用方法论。

使用 npm

npm 安装 dotenv

或带纱线

纱线添加 dotenv

使用

尽早在您的应用程序中要求并配置 dotenv。

<块引用>

require('dotenv').config()

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

端口:8080

Dotenv