Node.js'de process.env.PORT dosyası nedir?


175

process.env.PORT || 3000Node.js'de ne için kullanılır? Bunu bir yerde gördüm:

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

3000Dinleme bağlantı noktası olarak ayarlamak için kullanılırsa , bunun yerine bunu kullanabilir miyim?

app.listen(3000);

Değilse neden?

Yanıtlar:


239

Birçok ortamda (örn. Heroku) ve bir kural olarak, ortam değişkenini PORTweb sunucunuza hangi bağlantı noktasını dinleyeceğini bildirecek şekilde ayarlayabilirsiniz .

Yani şu process.env.PORT || 3000anlama gelir: PORT ortam değişkeninde ne varsa, ya da orada hiçbir şey yoksa 3000.

Yani bunu app.listenya da adresine iletirsiniz app.set('port', ...)ve bu da sunucunuzun ortamdan hangi bağlantı noktasını dinleyeceğini kabul edebilmesini sağlar.

Eğer başarılı olursa 3000kodlanmış app.listen(), her zaman sadece sizin için olabilir, hangi portu 3000 dinlediğiniz, ya da değil, ihtiyaçlarınız ve size sunucu çalıştırıyorsanız ortamın gereksinimlerine göre.


74
  • eğer node index.jskoşarsan, Düğüm3000

  • Çalıştırırsanız PORT=4444 node index.js, Düğüm bu örnekte process.env.PORTeşit olanı kullanır 4444. sudo1024 altındaki bağlantı noktaları için çalıştırın .


13
Bunu Windows makinesinde kullanıyorsanız, ilk olarak PORT değişkenini "set PORT = 3300" olarak ayarlamanız gerekir, daha sonra bir sonraki komutta, server.js düğümü çalıştırırsanız, bağlantı noktası 3000 yerine 3300 olarak alınır. .
Aakash Jain

35

Uygulamanızı başka bir hizmette (Heroku, Nodejitsu ve AWS gibi) barındırırken, barındırıcınız process.env.PORTdeğişkeni sizin için bağımsız olarak yapılandırabilir ; sonuçta, betiğiniz kendi ortamında çalışır.

Amazon'un Elastik Beanstalk bunu yapar. Eğer gibi statik port değerini ayarlamak çalışırsanız 3000yerine process.env.PORT || 30003000 statik ayar nerede Amazon sizin için port yapılandırılması nedeniyle, başvurunuz 500 geçidi hata ile sonuçlanır.

Bu Amazon'un Elastik Beanstalk üzerine dağıtacak minimal bir Express uygulamasıdır:

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

1
ES6'yı destekleyen Node.js içinde daha da kısa yazabilirsiniz:const {PORT = 3000} = process.env
Julian

1
@PA. hiçbir PA, eğer üretim ortamında process.env.port bulunursa, bağlantı noktası değerini alır. Bu işlemin soldan sağa okunacağını ve varsa ilk kullanılabilir değerde duracağını unutmayın.
HoCo_

11

Bazı senaryolarda, portyalnızca ortam tarafından belirlenebilir ve bir kullanıcı ortam değişkenine kaydedilir. Aşağıda node.js uygulamaları onunla nasıl çalışır.

processNesne üzerinde geçerli node.js süreci hakkında bilgi ve kontrolü sağlayan bir geneldir. Global olarak, Node.js uygulamaları her zaman kullanmadan kullanılabilir require().

process.envÖzelliği, kullanıcının ortamı içeren bir nesne döndürür.

Bu nesneye bir örnek şuna benzer:

{
  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'
}

Örneğin,

terminal : kalıcı olarak değil, yeni bir kullanıcı ortamı değişkeni ayarla

export MY_TEST_PORT=9999

app.js : düğüm uygulamasından yeni ortam değişkenini okuyun

console.log(process.env.MY_TEST_PORT)

terminal : düğüm uygulamasını çalıştırın ve değeri alın

$ node app.js
9999

0

Kod bağlantı noktasını ayarlar ortam değişkeni PORT değeri -veya- ( ||) 3000 ise eski değer tanımlanmamış (Eğer liman uygulama dağıtıldığında sayı aynı kalmayacak çevrimiçi "Sen kapalı konum").

Ve tuşlarını kullanın console.log(process.env)ve console.log(process.env.PORT)çıktının mesajını görün.

Merhaba Dünya Yeni başlayanlar için

Kod mantığını anlamak için bu "Merhaba Dünya" örneğini çok yararlı buluyorum. IF colortanımlanmış (beyaz)

const express = require("express"),
  app = express();

const color = "White";

app.set("myFavoriteColor", color || "Black");

console.log(`My Favorite Color Is:${app.get("myFavoriteColor")}`);

Çıktı: My Favorite Color Is:White

Eğer renk undefined

const express = require("express"),
  app = express();

const color = undefined;

app.set("myFavoriteColor", color || "Black");

console.log(`My Favorite Color Is:${app.get("myFavoriteColor")}`);

Çıktı: My Favorite Color Is:Black

Aynı "Beyaz / Siyah" mantığı ile ilgili değişkenler "port". Merhaba dünya örneği:

const express = require("express"),
  app = express();

process.env.PORT = 5000;

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

app.get("/", (req, res) => {
  res.send("Hello Port!");
});

app.listen(app.get("port"), () => {
  console.log(`Run http://localhost:${app.get("port")}`);
});

resim açıklamasını buraya girin

İlgili dokümanlar: https://expressjs.com/en/api.html#app.set

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.