2013-03-06 24 views
8

Jestem nowy w Node i Express, próbowałem zrobić coś z Expressem tylko po to, aby zacząć, a następnie stanąłem przed tym problemem.Express - res.send() działa raz

Pierwszy res.send() działa dobrze, ale drugi nie uruchamia się.

Oto mój kod:

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

    }) 
... 

'Hello' jest wysyłany, ale res.send('<p> .. </p>'); nie jest. Jeśli komentarz res.send('Hello');, goście będą wyświetlani.

Z góry dziękuję.

Odpowiedz

6

res.send() ma nazywać się tylko raz.

Spróbuj to zamiast:

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

(lub po prostu res.send("Hello<p id=..."), ale o co chodzi :)

+0

Dziękuję, mam to, więc muszę zadzwonić tylko raz i wysłać wszystko, co chcę, od razu. ty! –

+1

Dziś znalazłem ten sam problem i ten post pomógł mi +1 dla wszystkich :) – Trialcoder

3

To dlatego res.send() zakończy wysyłanie odpowiedzi.

Po napotkaniu res.send('Hello'); natychmiast wysyła odpowiedź. Tak więc następny res.send nie zostanie wykonany i nie będzie można zobaczyć użytkowników. Komentowanie pierwszego numeru res.send pozwala wyświetlić drugi.

Powiązane problemy