2014-03-03 26 views
0

我已經建立了一個簡單的節點服務器和節點測試程序:up and running book。當我用調試跟蹤它時,它似乎工作正常,但我很好奇爲什麼console.log沒有向終端輸出任何內容。節點測試和console.log問題

服務器,app.js

var express = require('express'); 
var http = require('http'); 

var app = express(); 
app.set('port', process.env.PORT || 8000) 

app.use(express.urlencoded()); 
app.use(express.json()); 
app.use(express.logger('dev')); 


var tweets = []; 

app.get('/', function (req, res) { 
    res.send('Welcome to Node Twitter'); 
}); 

app.post('/send', function(req, res) { 
if (req.body && req.body.tweet) { 
    tweets.push(req.body.tweet); 
    res.send({status:"ok", message:"Tweet received"}); 
} else { 
    // no tweet ? 
    res.send({status:"nok", message:"No tweet received"}); 
} 
}); 

app.get('tweets', function (req, res) { 
res.send(tweets); 
}); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

測試腳本,test.js

var http = require('http'); 
assert = require('assert'); 

var opts = { 
host: 'localhost', 
port: 8000, 
path: '/send', 
method: 'POST', 
headers: {'content-type':'application/x-www-form-urlencoded'} 
} 

var req = http.request(opts, function(res) { 
res.setEncoding('utf8'); 

console.log("Sending test"); 

var data = ""; 
res.on('data', function(d) { 
    data += d; 
}) 



res.on('end', function() { 
    assert.strictEqual(data, '{"status":"ok", "message":"Tweet received"}'); 
    console.log("test"); 

}) 
}) 

req.write('tweet=test') 
req.end 

很想一些建議。

+0

這方面的工作? 'console.log('Express server listen on port'+ app.get('port'));' –

+0

什麼控制檯 - 有兩個應用程序(服務器和測試客戶端),哪一個不輸出?也表示有自己的http服務器 – SergeS

+0

道歉,test.js文件中的console.log語句不起作用。 app.js中的一個正常工作 – colster

回答

0

事件end永遠不會被解僱,因爲您沒有調用函數req.end。您維護了http請求/連接。你永遠不會完成它。

嘗試,而不是:

req.end(); 

想想之間的區別:

console.log('HI'); 
console.log; 
+0

謝謝。愚蠢的錯誤。 – colster