para que é process.env.PORT || 3000
usado o Node.js? Eu vi isso em algum lugar:
app.set('port', process.env.PORT || 3000);
Se for usado para definir 3000
como a porta de escuta, posso usar isso?
app.listen(3000);
Se não, por quê?
Em muitos ambientes (por exemplo, Heroku), e como convenção, você pode definir a variável de ambiente PORT
para informar ao servidor da Web em que porta ouvir.
O que process.env.PORT || 3000
significa: o que estiver na variável de ambiente PORT, ou 3000, se não houver nada lá.
Então você passa isso app.listen
, ou para app.set('port', ...)
, e isso torna seu servidor capaz de aceitar um parâmetro do ambiente em qual porta escutar.
Se você passa 3000
o código embutido app.listen()
, está sempre ouvindo na porta 3000, o que pode ser apenas para você, ou não, dependendo de seus requisitos e dos requisitos do ambiente em que você está executando seu servidor.
se você executar node index.js
, o Node usará3000
Se você executar PORT=4444 node index.js
, o Node usará o process.env.PORT
que é igual a 4444
neste exemplo. Execute com sudo
portas abaixo de 1024.
Ao hospedar seu aplicativo em outro serviço (como Heroku, Nodejitsu e AWS), seu host pode configurar independentemente o
process.env.PORT
variável para você; afinal, seu script é executado no ambiente deles.O Elastic Beanstalk da Amazon faz isso. Se você tentar definir um valor de porta estática como em
3000
vez deprocess.env.PORT || 3000
onde 3000 é sua configuração estática, seu aplicativo resultará em um erro de gateway 500 porque a Amazon está configurando a porta para você.Este é um aplicativo Express mínimo que será implantado no Elastic Beanstalk da Amazon:
fonte
const {PORT = 3000} = process.env
Em alguns cenários,
port
só pode ser designado pelo ambiente e é salvo em uma variável de ambiente do usuário. Abaixo está como os aplicativos node.js funcionam com ele.O
process
objeto é um global que fornece informações e controle sobre o processo atual do Node.js. Como global, está sempre disponível para aplicativos Node.js sem usarrequire()
.o
process.env
propriedade retorna um objeto que contém o ambiente do usuário.Um exemplo desse objeto se parece com:
Por exemplo,
terminal : define uma nova variável de ambiente do usuário, não permanentemente
app.js : leia a nova variável de ambiente no aplicativo do nó
terminal : execute o aplicativo do nó e obtenha o valor
fonte