Node.js में process.env.PORT क्या है?


175

process.env.PORT || 3000Node.js में क्या उपयोग किया जाता है? मैंने इसे कहीं देखा:

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

यदि इसे 3000सुनने के बंदरगाह के रूप में सेट करने के लिए उपयोग किया जाता है , तो क्या मैं इसके बजाय इसका उपयोग कर सकता हूं?

app.listen(3000);

यदि नहीं तो क्यों?

जवाबों:


237

कई वातावरणों में (जैसे हरोकू), और एक सम्मेलन के रूप में, आप PORTअपने वेब सर्वर को यह बताने के लिए पर्यावरण चर सेट कर सकते हैं कि किस पोर्ट को सुनना है।

तो process.env.PORT || 3000इसका मतलब है: जो कुछ भी पर्यावरण चर पोर्ट, या 3000 में है अगर वहाँ कुछ भी नहीं है।

तो आप इसे पारित करते हैं app.listen, या app.set('port', ...)जो आपके सर्वर को पर्यावरण के एक पैरामीटर को स्वीकार करने में सक्षम बनाता है जो कि सुनने के लिए पोर्ट है।

यदि आप 3000हार्ड-कोडिंग पास app.listen()करते हैं, तो आप हमेशा पोर्ट 3000 पर सुन रहे हैं, जो कि आपके लिए और आपकी सर्वर को चलाने वाले पर्यावरण की आवश्यकताओं के आधार पर आपके लिए हो सकता है या नहीं।


74
  • यदि आप चलाते हैं node index.js, तो नोड उपयोग करेगा3000

  • यदि आप चलाते हैं PORT=4444 node index.js, तो नोड का उपयोग करेगा process.env.PORTजो 4444इस उदाहरण में बराबर है । sudo1024 से नीचे के बंदरगाहों के लिए चलाएँ ।


13
यदि आप इसे विंडोज़ मशीन में उपयोग कर रहे हैं, तो पहले आपको PORT वैरिएबल को "सेट PORT = 3300" के रूप में सेट करना होगा, फिर अगले कमांड में, यदि आप नोड server.js चलाते हैं, तो यह 3000 के बजाय 3300 के रूप में पोर्ट लेगा ।
आकाश जैन

35

किसी अन्य सेवा (जैसे हरोकू, नोडजित्सु, और एडब्ल्यूएस) पर अपने आवेदन की मेजबानी करते समय, आपका मेजबान स्वतंत्र रूप से कॉन्फ़िगर कर सकता है process.env.PORT चर को ; आखिरकार, आपकी स्क्रिप्ट उनके वातावरण में चलती है।

अमेज़न के इलास्टिक बीनस्टॉक ने ऐसा किया है। आप की तरह एक स्थिर पोर्ट मान सेट करने का प्रयास करें 3000के बजाय process.env.PORT || 3000जहां 3000 अपने स्थिर सेटिंग है, तो आपके आवेदन एक 500 प्रवेश द्वार त्रुटि हो क्योंकि अमेज़न आप के लिए पोर्ट को विन्यस्त है जाएगा।

यह एक न्यूनतम एक्सप्रेस एप्लिकेशन है जो अमेज़ॅन के इलास्टिक बीनस्टॉक पर तैनात होगा:

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 का समर्थन करने वाले Node.js के भीतर आप और भी छोटे लिख सकते हैं:const {PORT = 3000} = process.env
जूलियन

1
@PA। कोई पीए, अगर process.env.port उत्पादन environnement पर पाया जाता है तो बंदरगाह को इसका मूल्य मिलेगा। याद रखें कि यह ऑपरेशन बाएं से दाएं पढ़ा जाएगा और पहले उपलब्ध मूल्य पर रोक सकता है यदि कोई हो।
होउको_

11

कुछ परिदृश्यों में, portकेवल पर्यावरण द्वारा निर्दिष्ट किया जा सकता है और उपयोगकर्ता पर्यावरण चर में सहेजा जाता है। नीचे बताया गया है कि कैसे नोड.जेएस ऐप इसके साथ काम करते हैं।

processवस्तु एक वैश्विक कि, से अधिक के बारे में जानकारी है, और नियंत्रण प्रदान करता है वर्तमान Node.js प्रक्रिया है। एक वैश्विक के रूप में, यह हमेशा उपयोग किए बिना 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 : नोड ऐप से नया पर्यावरण चर पढ़ें

console.log(process.env.MY_TEST_PORT)

टर्मिनल : नोड ऐप चलाएं और मूल्य प्राप्त करें

$ node app.js
9999
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.