目前我正在研究兩個node.js教程,當我理解每個教程中發生的事情時,我清楚地不明白和是什麼。無法理解node.js監聽器
下面的代碼監聽「data」事件,然後將新的數據塊添加到名爲postData的變量中。另一個監聽器將這些數據與其他內容一起發送到我的route.js文件。
request.addListener("data", function (postDataChunk) {
postData += postDataChunk;
console.log("Received POST data chunk '" + postDataChunk + "'.");
});
request.addListener("end", function () {
route(handle, pathname, response, postData);
});
下面的代碼創建一個變量,tailChild,會派生對我的系統日誌中的shell命令「尾巴」,然後嘗試這個數據添加到我的POSTDATA變量:
var spawn = require('child_process').spawn;
var tail_child = spawn('tail', ['-f', '/var/log/system.log']);
tail_child.stdout.on('data', function (data) {
postData += data;
console.log("TAIL READING: " + data);
});
tail_child.stdout.on('end', function () {
route(handle, pathname, response, postData);
});
現在我的控制檯使用system.log數據實時更新,但我的瀏覽器超時出現「沒有數據收到錯誤」。
我已經嘗試調整上面的代碼來判斷哪裏出了問題,並且我可以告訴節點告訴我var數據爲空,因此它沒有向var postData添加任何內容。這對我沒有意義,因爲console.log("TAIL READING: " + data)
在我的終端窗口中給出了spawn('tail', ['-f', '/var/log/system.log'])
的結果。很明顯,var數據不是null。
編輯: Here's a pastebin link to my server.js code
你能顯示整個代碼嗎?我的代碼片段中沒有看到任何錯誤? – Raynos 2011-06-16 18:16:09
Raynos,我的所有代碼都分散在多個文件中。你只是想要我的server.js代碼?這些片段來自server.js – somas1 2011-06-16 18:18:29
@ somas1你不應該有兩個'end'聽衆,也不應該有兩個呼叫'路線' – Raynos 2011-06-16 18:28:50