2013-03-06 10 views
8

मैं नोड और एक्सप्रेस के लिए नया हूं, मैं बस शुरू करने के लिए एक्सप्रेस के साथ कुछ करने की कोशिश कर रहा था, तो मुझे इस समस्या का सामना करना पड़ा।एक्सप्रेस - res.send() एक बार काम करता है

पहले res.send() अच्छी तरह से काम करता है, लेकिन दूसरा व्यक्ति आग नहीं लगाता है।

यहाँ मेरी कोड है:

var express = require('express'), 
    app  = express(), 
    fs  = require('fs'), 
    visits; 


app.listen(8080); 

app.get('/', function(req,res) { 

    res.send('Hello'); 

    fs.readFile('counter.txt','utf-8', function(e,d) { 

     if (e) { 
      console.log(e); 
     } 
     else { 
      console.log(parseInt(d) + 1); 
      fs.writeFile('counter.txt',parseInt(d) + 1); 
      res.send('<p id="c">' + (parseInt(d) + 1) + '</p>'); 
     } 

    }) 
... 

'हैलो' भेज दिया जाता है, लेकिन res.send('<p> .. </p>'); नहीं है। अगर मैं res.send('Hello'); पर टिप्पणी करता हूं, तो आगंतुकों को दिखाया जाएगा।

अग्रिम धन्यवाद।

उत्तर

6

res.send() केवल एक बार कहा जाता है।

ऐसा करें:

app.get('/', function(req,res) { 
    var response = 'Hello'; 
    fs.readFile('counter.txt','utf-8', function(e,d) { 
     if (e) { 
     console.log(e); 
     res.send(500, 'Something went wrong'); 
     } 
     else { 
     console.log(parseInt(d) + 1); 
     fs.writeFile('counter.txt',parseInt(d) + 1); 
     response += '<p id="c">' + (parseInt(d) + 1) + '</p>'; 
     res.send(response); 
     } 
    }) 
}); 

(या सिर्फ res.send("Hello<p id=..."), लेकिन आप बात समझ :)

+0

धन्यवाद, मुझे मिल गया, इसलिए मुझे इसे एक बार कॉल करना होगा और एक बार में जो कुछ भी मैं चाहता हूं उसे भेजना होगा। Ty! –

+1

आज मुझे एक ही समस्या मिली और इस पोस्ट ने मुझे सभी को +1 +1 करने में मदद की :) – Trialcoder

3

इसका कारण यह है res.send() जवाब भेजने से समाप्त कर ले।

जब res.send('Hello'); का सामना करना पड़ता है तो यह तुरंत प्रतिक्रिया भेजता है। तो अगले res.send निष्पादित नहीं किया गया है और आप आगंतुकों को नहीं देख सकते हैं। पहले res.send पर टिप्पणी करने से आप दूसरे को देख सकते हैं।

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