Node.js示例代码不起作用

我试图运行一些简单的node.js代码,这个hello world没有任何问题:

var http = require('http'); var server = http.createServer(function (request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.end("Este node.js criou um servidor\n"); }); server.listen(8000); 

但是当我尝试运行这个应该很简单的浏览器(试过IE和Chrome)时,它会一直保持加载状态,然后超时。 可能是什么问题呢?

 var http = require("http"), fs = require("fs"); http.createServer(function (request, response) { request.on('end', function () { if (request.url == '/') { fs.readFile('test.txt', 'utf-8', function (error, data) { response.writeHead(200, { 'Content-Type': 'text/plain' }); data = parseInt(data) + 1; fs.writeFile('test.txt', data); response.end('This page was refreshed ' + data + ' times!'); }); } else { response.writeHead(404); response.end(); } }); }).listen(8000); 

顺便说一下,我已经创build了test.txt文件在代码相同的文件夹中,它只有内部数字1。

结束请求永远不会启动,因为请求在调用服务器时完成。 删除该行,准备好像这样:

 var http = require("http"), fs = require("fs"); http.createServer(function (request, response) { // request.on('end', function () { if (request.url == '/') { fs.readFile('test.txt', 'utf-8', function (error, data) { response.writeHead(200, { 'Content-Type': 'text/plain' }); data = parseInt(data) + 1; fs.writeFile('test.txt', data); response.end('This page was refreshed ' + data + ' times!'); }); } else { response.writeHead(404); response.end(); } // }); }).listen(8000); 

来自HTTP处理程序的请求对象是可读stream的实例,当处于非stream动模式时,它不会发出end事件。 如果期望end事件,则stream必须被恢复。

如果你不打算收集请求的主体,那么你根本就不需要听end事件。 你可以写下回应:

 http.createServer(function(req, res) { if (request.url == '/') { fs.readFile('test.txt', 'utf-8', function (error, data) { res.writeHead(200, {'Content-Type': 'text/plain'}); data = parseInt(data) + 1; fs.writeFile('test.txt', data); res.end('This page was refreshed ' + data + ' times!'); }); } else { res.writeHead(404); res.end(); } }).listen(); 

否则,可以通过以下任一方式将stream转换为stream动模式:

 req.resume(); req.on('data', function(chunk) {}); 

似乎结构的方式与我所看到的完全不同。 你不应该需要request.on结构。 一般来说,你可以使用这样的东西:

 var http = require("http"); var Start = function(){ var onRequest = function(request, response){ response.writeHead(200, {"Content-Type" : "text/plain" }); response.write("HEllo World"); response.end(); } http.createServer(onRequest).listen(8888); } exports.Start = Start; 

导出的原因是你可以从另一个文件启动(这对于build议的模块化devise来说是很好的。至于加载文件 – 你的加载方式可能工作,但问题是它只会服务器文本文件 – 尝试使用html文件将会失败,您可能还想要提供html文件以及.js和.css文件(以及其他任何内容,例如图片)。因此,请参阅我的答案,这是很长的一个代码很多,在下面的链接: 点击这里 。