2013-03-06 11 views
8

Ich bin neu bei Node und Express, ich habe versucht, etwas mit Express nur um zu beginnen, dann habe ich dieses Problem konfrontiert.Express - res.send() funktioniert einmal

Erste res.send() funktioniert gut, aber der zweite feuert nicht.

Hier ist mein Code:

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>'); 
     } 

    }) 
... 

'Hallo' gesendet wird, aber res.send('<p> .. </p>'); nicht. Wenn ich res.send('Hello'); kommentiere, werden Besucher angezeigt.

Vielen Dank im Voraus.

Antwort

6

res.send() soll nur einmal aufgerufen werden.

Versuchen Sie stattdessen:

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); 
     } 
    }) 
}); 

(oder nur res.send("Hello<p id=..."), aber Sie erhalten den Punkt :)

+0

Danke, ich habe es, also muss ich es nur einmal anrufen und alles senden, was ich will, auf einmal. ty! –

+1

Heute habe ich das gleiche Problem gefunden und dieser Beitrag hat mir viel +1 zu allen geholfen :) – Trialcoder

3

Dies liegt daran, res.send(), um die Reaktion beendet sendet.

Wenn res.send('Hello'); angetroffen wird, wird die Antwort sofort gesendet. Also nächste res.send wird nicht ausgeführt und Sie können keine Besucher sehen. Kommentieren Sie die erste res.send können Sie die zweite anzeigen.

Verwandte Themen