do czego process.env.PORT || 3000
służy w Node.js? Widziałem to gdzieś:
app.set('port', process.env.PORT || 3000);
Jeśli jest używany 3000
jako port nasłuchujący, czy mogę go zamiast tego użyć?
app.listen(3000);
Jeśli nie, dlaczego?
W wielu środowiskach (np. Heroku) i zgodnie z konwencją, możesz ustawić zmienną środowiskową, PORT
aby poinformować serwer WWW, na jakim porcie ma nasłuchiwać.
To process.env.PORT || 3000
znaczy: cokolwiek jest w zmiennej środowiskowej PORT lub 3000, jeśli nic tam nie ma.
Więc przekazujesz to app.listen
lub do app.set('port', ...)
, a to sprawia, że twój serwer może zaakceptować parametr ze środowiska, na którym porcie nasłuchiwać.
Jeśli przejdziesz 3000
zakodowane na stałe app.listen()
, zawsze słuchasz na porcie 3000, który może być tylko dla Ciebie lub nie, w zależności od Twoich wymagań i wymagań środowiska, w którym uruchamiasz serwer.
jeśli uruchomisz node index.js
, Node użyje3000
Jeśli uruchomisz PORT=4444 node index.js
, Node użyje tego, process.env.PORT
co 4444
w tym przykładzie jest równe . Uruchom z sudo
portami poniżej 1024.
Podczas hostowania aplikacji w innej usłudze (takiej jak Heroku, Nodejitsu i AWS), Twój host może niezależnie skonfigurować
process.env.PORT
zmienną za Ciebie; w końcu twój skrypt działa w ich środowisku.Robi to Elastic Beanstalk firmy Amazon. Jeśli spróbujesz ustawić wartość portu statycznego, na przykład
3000
zamiast tego,process.env.PORT || 3000
gdzie 3000 jest ustawieniem statycznym, aplikacja spowoduje błąd bramy 500, ponieważ Amazon konfiguruje port za Ciebie.To jest minimalna aplikacja Express, która zostanie wdrożona na Elastic Beanstalk firmy Amazon:
źródło
const {PORT = 3000} = process.env
W niektórych scenariuszach
port
może być wyznaczony tylko przez środowisko i jest zapisywany w zmiennej środowiskowej użytkownika. Poniżej opisano, jak działają z nim aplikacje node.js.process
Obiekt jest globalnym, która dostarcza informacji na temat oraz kontroli nad bieżący proces node.js. Jako globalny, jest zawsze dostępny dla aplikacji Node.js bez użyciarequire()
.process.env
Własność zwraca obiekt zawierający środowisko użytkownika.Przykład tego obiektu wygląda następująco:
Na przykład,
terminal : ustaw nową zmienną środowiskową użytkownika, nie na stałe
app.js : przeczytaj nową zmienną środowiskową z aplikacji node
terminal : uruchom aplikację node i pobierz wartość
źródło