Что такое процесс.env.Порт в узле.Яш?
что это process.env.PORT || 3000
используется для In Node.Яш? Я видел это где-то:
app.set('port', process.env.PORT || 3000);
если он используется для установки 3000
как порт прослушивания, могу ли я использовать это вместо этого?
app.listen(3000);
если нет то почему?
4 ответов
во многих средах (например, Heroku), и как соглашение, вы можете установить переменную среды PORT
чтобы сообщить вашему веб-серверу, какой порт прослушивать.
так process.env.PORT || 3000
означает: все, что находится в порту переменной среды, или 3000, если там ничего нет.
Так вы проходите, что app.listen
или app.set('port', ...)
, и это позволяет вашему серверу принимать параметр из среды, какой порт для прослушивания.
если вы передадите 3000
жестко app.listen()
, вы всегда слушаете порт 3000, который может быть только для вас или нет, в зависимости от ваших требований и требований среды, в которой вы используете свой сервер.
если вы запустите
node index.js
,узел будет использовать3000
если вы запустите
PORT=4444 node index.js
, узел будет использоватьprocess.env.PORT
что составляет4444
в этом примере. Беги сsudo
для портов ниже 1024.
при размещении вашего приложения на другом сервисе (например, Heroku, Nodejitsu и AWS) ваш хост может самостоятельно настроить process.env.PORT
переменная для вас; в конце концов, ваш скрипт работает в их среде.
эластичный Бобовый Стебель Amazon делает это. Если вы пытаетесь установить статическое значение порта, например 3000
вместо process.env.PORT || 3000
где 3000-ваш статический параметр, тогда ваше приложение приведет к ошибке шлюза 500, потому что Amazon настраивает порт для вы.
это минимальное Экспресс-приложение, которое будет развертываться на эластичном бобовом стебле Amazon:
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);
в некоторых случаях port
может быть обозначен только средой и сохраняется в переменной среды пользователя. Ниже показано, как node.приложения js работают с ним.
на process
объект является глобальным, который предоставляет информацию о текущем узле и управляет им.процесс Яш. Как глобальный, он всегда доступен для 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: прочитайте новую переменную среды из node app
console.log(process.env.MY_TEST_PORT)
терминал: запустите приложение узла и получите значение
$ node app.js
9999