Что такое 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, который вы можете использовать для проверки расположения двоичных файлов и выполнения внешних вызовов к ним, если это необходимо.