2011-12-28 11 views
11

जब मैं, अस्तित्वहीन मेजबान का उपयोग करने की http मॉड्यूल का उपयोग करने के लिए कोशिश कर रहा हूँ इस तरह:nonxistent होस्ट पर node.js http त्रुटि को कैसे पकड़ें?

requestToRemote = http.createClient(80, 'fjasdfhasdkfj.vvvxcz').request(
    method, 
    path, 
    headers 
); 

लेकिन मैं निम्नलिखित त्रुटि मिलती है:

node.js:201 
     throw e; // process.nextTick error, or 'error' event on first tick 
      ^
Error: getaddrinfo ENOENT 
    at errnoException (dns.js:31:11) 
    at Object.onanswer [as oncomplete] (dns.js:140:16) 

मैं इस त्रुटि को पकड़ने के लिए चाहते हैं, तो मैंने अनुरोध गुणों के समूह के त्रुटि श्रोताओं को आज़माकर/पकड़ने और सेट करने का प्रयास किया है, लेकिन यदि कोई काम नहीं करता है। मैं त्रुटि कैसे पकड़ सकता हूं?

उत्तर

9

लगता त्रुटि की तरह http.Client से फेंक दिया जाता है, न कि अनुरोध। कैसे की तरह कुछ के बारे में:

var site = http.createClient(80, host); 
site.on('error', function(err) { 
    sys.debug('unable to connect to ' + host); 
}); 
var requestToRemote = site.request(...); 

FYI करें, http.createClient पदावनत किया गया है - निम्नलिखित मिल सुविधा विधि का उपयोग कर काम करना चाहिए:,

http.get({host: host}, function(res) { 
    ... 
}).on('error', function(e) { 
    console.log("Got error: " + e.message); 
}); 
+0

प्रतिक्रिया के पाठ को देखने के लिए मैं कॉलबैक में 'res' मान का उपयोग कैसे करूं? –

-1

आप अपना कोड चलाने से पहले डीएनएस मॉड्यूल का उपयोग कर मेजबान को आजमा सकते हैं और हल कर सकते हैं।

http://nodejs.org/docs/latest/api/dns.html#dns.resolve

+4

यह एक अच्छा समाधान नहीं है के रूप में यह तो हल करने शामिल होगा मेजबाननाम दो बार। यहां तक ​​कि कैश किए जाने पर भी, एक छोटा सा जुर्माना होता है जो आपके ऐप की ज़रूरतों के आधार पर तेज़ी से गुणा कर सकता है। निश्चित रूप से, जब आप अनुरोध करते हैं तो आप मेजबाननाम के बजाय नेटवर्क पता का उपयोग कर सकते हैं, लेकिन फिर आपको अनुरोध शीर्षलेखों को संभालना होगा जो स्वयं होस्ट को निर्दिष्ट करते हैं। – Brad

संबंधित मुद्दे