2015-09-15 5 views
12

मानक एक्सप्रेसजे के बाद हैलो शब्द उदाहरण के बाद, मुझे '::' का एक मेजबान मिलता है।एक्सप्रेसज सर्वर एड्रेस होस्ट कुछ भी नहीं लौटाता

ऐसा क्यों होता है?

हैलो शब्द उदाहरण:

var server = app.listen(3000, function() { 
    var host = server.address().address; 
    var port = server.address().port; 

    console.log('Example app listening at http://%s:%s', host, port); 
}); 

मैं एक टिप है कि जोड़ने था बंदरगाह पैरामीटर के बाद 'स्थानीय होस्ट' मिल गया। यह हल हो गया जब मैं सिर्फ अपने पीसी देख रहा था, लेकिन यह नेटवर्क पर काम नहीं करेगा। मुझे क्या करना चाहिए?

+0

कि आप दस्तावेज़ों से यह कोशिश करो शामिल करने के लिए 'स्थानीय होस्ट' की जरूरत नहीं करना चाहिए? http://expressjs.com/starter/hello-world.html –

+0

@ लुकासकोस्टा हां, मैंने किया। –

+0

मुझे बिल्कुल वही समस्या मिली। –

उत्तर

6

मैं उदाहरण की कोशिश की और होस्ट नाम के लिए एक ही उत्पादन किया था '::', मैं एक समाधान के रूप में निम्नलिखित बदल दिया:

var server = app.listen(3000, 'localhost', function() { 
    var host = server.address().address; 
    var port = server.address().port; 
    console.log('Example app listening at http://%s:%s', host, port); 
}); 

उत्पादन:

उदाहरण एप्लिकेशन http://127.0.0.1:3000

+0

हां, मैंने पहले से ही किया है, लेकिन यह नेटवर्क पर उपलब्ध नहीं है। क्या आपने मशीन आईपी को किसी अन्य पीसी/स्मार्टफोन/टैबलेट के साथ एक्सेस करने का प्रयास किया था? –

+0

मेरे उदाहरण में मैं लोकलहोस्ट को एड्रेस के रूप में सेट कर रहा हूं, इसलिए यदि आपको नेटवर्क पर उपलब्ध होने की आवश्यकता है तो क्या आप स्थानीय मशीन के बजाय अपना मशीन आईपी एड्रेस सेट करने का प्रयास कर सकते हैं और इसे आज़मा सकते हैं? – lsampaio

+0

मैंने इसे पहले यहां आने से पहले किया था ... यह अच्छी तरह से काम करता है, लेकिन पिछले एक्सप्रेसजेएस में हमें नेटवर्क पता स्वचालित रूप से –

7
पर सुन रहा

में कोड

var server = app.listen(3000, function() { 

एक पते पैरामीटर के बिना के लिए listen फ़ंक्शन, नोड पर किसी भी पते से संबंधित होगा, आईपीवी 4 के पते 0.0.0.0 से संबंधित है, और IPV6 में :: से संबंधित है। और यह IPv6 अनिर्दिष्ट पता, 0:0:0:0:0:0:0:0,, :: करने के लिए कम है

netstat -a

TCP [::]:3000    CP-Q10001:0  LISTENING 

चल हम नोड सर्वर पता बंदरगाह 3000 साथ पता :: पर सुनने के बाद। :) जब आईपीवी 6 उपलब्ध है, या किसी भी:


जो express.jshere

app.listen = function listen() { 
    var server = http.createServer(this); 
    return server.listen.apply(server, arguments); 
}; 

में प्रयोग किया जाता होस्ट नाम शामिल न करने पर, सर्वर ने कोई IPv6 पता पर कनेक्शन (स्वीकार करेंगे http.listen का संदर्भ लें आईपीवी 4 पता (0.0.0.0) अन्यथा।

+0

देता है लेकिन यह खाली क्यों लौटाता है?क्या यह किसी प्रकार का आईपी पता नहीं होना चाहिए? –

+0

@ जॉर्ज मॉयर, परिणाम 'http: // ::: 3000' है, और '::' 'IPV6' का आईपी पता है, _blank_ मुझे नहीं लगता। – zangw

+0

अतीत में, यह ठीक दिखता है http://127.0.0.1:3000 लेकिन, कुछ दिनों के बाद, यह बंद हो गया और कभी नहीं दिखाया गया :( –

0

यह आपको वह परिणाम देगा जो आप ढूंढ रहे हैं। आप

var server = app.listen(3000, function() { 
    var port = server.address().port; 
    require('dns').lookup(require('os').hostname(), function (err, add, fam) { 
     debug('Example app listening at http://%s:%s', add, port); 
    }) 
}); 
संबंधित मुद्दे