2013-03-06 71 views
8

我是Node和Express的新手,我試圖用Express來製作一些東西,然後我就遇到了這個問題。Express - 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! – 2013-03-06 14:39:11

+1

今天我發現了同樣的問題,這篇文章幫了我很多+1 :) – Trialcoder 2014-04-17 11:08:12

3

這是因爲res.send()完成發送響應。

當遇到res.send('Hello');時,它立即發送響應。所以下一個res.send不會執行,你不能看到訪客。評論第一個res.send可讓您查看第二個。