Что такое process.env.PORT в Node.js?

что используется process.env.PORT || 3000 для Node.js? Я видел это где-то:

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

Если он используется для установки 3000 в качестве порта прослушивания, могу ли я использовать его вместо этого?

app.listen(3000);

Если не так?

Ответ 1

Во многих средах (например, Heroku) и в качестве соглашения вы можете установить переменную среды PORT, чтобы сообщить вашему веб-серверу, какой порт прослушивать.

So process.env.PORT || 3000 означает: все, что находится в переменной окружения PORT, или 3000, если там ничего нет.

Итак, вы передаете этот app.listen или app.set('port', ...), и это позволяет вашему серверу принимать параметр из среды, какой порт для прослушивания.

Если вы передаете 3000 с жестким кодом на app.listen(), вы всегда слушаете порт 3000, который может быть только для вас, или нет, в зависимости от ваших требований и требований среды, перезапустите ваш сервер.

Ответ 2

  • если вы запустите node index.js, Node будет использовать 3000

  • Если вы запустите PORT=4444 node index.js, Node будет использовать process.env.PORT, который равен 4444 в этом примере. Запустите с sudo для портов ниже 1024.

Ответ 3

При размещении вашего приложения на другой службе (например, Heroku, Nodejitsu и AWS) ваш хост может самостоятельно настроить переменную process.env.PORT для вас; в конце концов, ваш script работает в своей среде.

Amazon 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);

Ответ 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

Ответ 5

Что это такое? Глобальная переменная process.env вводится узлом во время выполнения для использования вашим приложением, и она представляет состояние системной среды, в которой находится ваше приложение, когда оно запускается. Например, если в системе установлена переменная PATH, она будет доступна вам через process.env.PATH, который вы можете использовать для проверки расположения двоичных файлов и выполнения внешних вызовов к ним, если это необходимо.