2013-07-27 79 views
0

我是新太的Node.js和附教程會得到基本的Node.js服務器不工作

sys = require("sys"); 
var http = require("http"); 
var url = require("url"); 
var fs=require("fs"); 

http.createServer(function(request,response){ 
    sys.puts("I got kicked"); 
    //var _get = url.parse(request.url, true).query; 
    request.on("end", function() { 

     fs.readFile("test.txt", 'utf-8', function (error, data) { 
     // Write headers. 
     response.writeHead(200, {'Content-Type': 'text/plain'}); 
     // Increment the number obtained from file. 
     data = parseInt(data) + 1; 
     // Write incremented number to file. 
     fs.writeFile('test.txt', data); 
     // End response with some nice message. 
     response.end('This page was refreshed ' + data + ' times!'); 
     }); 

    }); 

    //response.write("Hello World"); 
    //response.end('Here is your data: ' + _get['data']); 
}).listen(8080); 
sys.puts("Server Running on 8080"); 

http://net.tutsplus.com/tutorials/javascript-ajax/node-js-for-beginners/ 得到這個代碼,但它不工作,我得到「沒有數據接收」瀏覽器錯誤。 認真迷戀我想知道最新的錯誤。如果我把response.end()放在request.on()中,它會工作,但不會識別數據對象... help!

回答

2

你不想使用request.on,但你希望把response.endreadFile回調,否則就會將數據讀出它之前返回:

var sys = require("sys"); 
var http = require("http"); 
var url = require("url"); 
var fs=require("fs"); 

http.createServer(function(request,response){ 
    sys.puts("I got kicked"); 
    //var _get = url.parse(request.url, true).query; 
    fs.readFile("test.txt", 'utf-8', function (error, data) { 
     // Write headers. 
     response.writeHead(200, {'Content-Type': 'text/plain'}); 
     // Increment the number obtained from file. 
     data = parseInt(data) + 1; 
     // Write incremented number to file. 
     fs.writeFile('test.txt', data); 
     // End response with some nice message. 
     response.end('This page was refreshed ' + data + ' times!'); 
    }); 

}).listen(8080); 
sys.puts("Server Running on 8080"); 

正如@克里斯指出,您的計數器將每次2遞增。

+0

我知道櫃檯......我只是想知道我給出的鏈接的代碼是否正確。 – Parisa

+0

@Parisa:如果你去那個網站的評論部分,第一/最好的評論說使用'request.on'是不對的。 –

+0

:))))))))))))tnx ...我的錯誤 – Parisa

0

僅僅是你在第一個地方沒有任何文件。

http://pastebin.com/M5verL8w

順便問一下,你會得到2刷新爲每一個,這要歸功於爲favicon.ico請求

(我沒有得到你提到者均基於錯誤,有什麼版本的Node.js您正在使用)

UPDATE:好,我做了一些修改,檢查它現在

+0

只是好奇,你用什麼版本的節點,適合你? –

+0

我有v0.8.23和v0.6.21-pre。它適用於 –

+0

嗯,也許它是一箇舊的/棄用/刪除的API,因爲我使用0.10,它只是掛起。 –