Во многих средах (например, Heroku), и, как правило, вы можете установить переменную среды, PORT
чтобы сообщить веб-серверу, какой порт прослушивать.
Так process.env.PORT || 3000
значит: что бы ни было в переменной окружения PORT, или 3000, если там ничего нет.
Таким образом, вы передаете это app.listen
, или app.set('port', ...)
, и это позволяет вашему серверу принимать параметр из среды, какой порт слушать.
Если вы передаете 3000
жестко закодированный app.listen()
, вы всегда слушаете порт 3000, который может быть только для вас или нет, в зависимости от ваших требований и требований среды, в которой вы используете свой сервер.
Размещая ваше приложение в другом сервисе (например, Heroku, Nodejitsu и AWS), ваш хост может самостоятельно настроить
process.env.PORT
переменную для вас; в конце концов, ваш скрипт работает в их среде.Эластичный бобовый стебель Amazon делает это. Если вы попытаетесь установить статическое значение порта, например,
3000
вместоprocess.env.PORT || 3000
3000, где ваши статические настройки, то ваше приложение приведет к ошибке 500 шлюзов, потому что Amazon настраивает порт для вас.Это минимальное приложение Express, которое будет развернуто на Amazon Elastic Beanstalk:
источник
const {PORT = 3000} = process.env
В некоторых сценариях
port
может назначаться только средой и сохраняется в переменной среды пользователя. Ниже показано, как с ним работают приложения node.js.process
Объект является глобальным , который предоставляет информацию о, и контроль над, текущим процессом Node.js. Как глобальный, он всегда доступен для приложений Node.js без использованияrequire()
.process.env
Свойство возвращает объект , содержащий пользовательскую среду.Пример этого объекта выглядит так:
Например,
терминал : установить новую переменную среды пользователя, а не постоянно
app.js : чтение новой переменной среды из приложения узла
терминал : запустите приложение узла и получите значение
источник