2010-10-14 6 views
16

एक अतिरिक्त काउंटर के साथ प्रलेखन से उदाहरण वेब सर्वर उदाहरण है। जब भी ग्राहक/ब्राउज़र पृष्ठ का अनुरोध करता है तो यह काउंटर को कंसोल पर प्रिंट करता है।नोडजेस वेब सर्वर कॉलिंग अनुरोध पृष्ठ लोड होने पर दो बार लिस्टर

हालांकि, ब्राउज़र द्वारा अनुरोध किए जाने पर इसे दो बार बुलाया जा रहा है। क्यूं कर?

यह मैं क्या होगा उम्मीद करेंगे है:

browser : Hello World 1 
console : Counter 1 
[reload page] 
browser : Hello World 2 
console : Counter 2 

लेकिन ऐसा होता है:

browser : Hello World 1 
console : Counter 1 
      Counter 2 
[reload page] 
browser : Hello World 3 
console : Counter 3 
      Counter 4 

मैं कोड है कमांड लाइन

$ node example.js 

यहाँ का उपयोग कर कोड को चलाने :

var 
    http = require('http'), 
    counter = 0, 
    sys = require('util'); 
    http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    counter++; 
    res.end('Hello World ' + counter + '\n'); 
    sys.puts('Counter ' + counter); 
    }).listen(8000, ""); 
+0

पहली बार मैं इस भाग गया मैं समान व्यवहार हो गया, लेकिन बाद में रन पर यह काम करता है जैसा सोचा था। –

+0

शायद यह मैं इसे कैसे चला रहा हूं। मैं बस कमांड लाइन 'नोड example.js' का उपयोग कर रहा हूँ। आप इसे कैसे चलाते हैं? – Garrows

+0

इसे –

उत्तर

37

प्रोग्रामिंग में, फंस गया, यह हमेशा समझने के लिए कोड का पता लगाने में आसान होता है कि क्या हो रहा है। ऐसा करने का सबसे आसान तरीका यह है कि जब तक आप देख सकें कि क्या हो रहा है, तब तक अधिक डीबग/प्रिंट स्टेटमेंट्स डालें।

बदलें sys.puts लाइन के लिए:

sys.puts('Counter ' + counter + " from " + req.url); 

मुझे लगता है कि आप पाएंगे कि 2 अनुरोध ब्राउज़र साइट के लिए फ़ेविकॉन का अनुरोध है।

+0

की तरह कमांड लाइन से चलाएं वास्तव में यह है। बहुत बहुत धन्यवाद bxjx। – Garrows

+0

@bxjx: आप सही हैं लेकिन चूंकि मैं नौसिखियों के लिए नौसिखिया हूं। मुझे इससे कैसे बचना चाहिए? –

4

हम पृष्ठ ताज़ा निम्नलिखित कोड का टुकड़ा के साथ फ़ेविकॉन की वजह से गिनती की उपेक्षा कर सकते हैं:

if (request.url === '/favicon.ico') { 
    response.writeHead(200, {'Content-Type': 'image/x-icon'}); 
    response.end(); 
    console.log('favicon requested'); 
    return; 
} 

रेफरी: https://gist.github.com/763822

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