2013-07-27 6 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.end в readFile обратного вызова, в противном случае он будет возвращать до данные считываются из него:

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, и он просто зависает. –

Смежные вопросы