1

我是 Node.js 的新手,所以我想我会检查一下并打个招呼。我在我的所有三台机器上都遇到了同样的问题,Win 8、Win 7 和 Mac。起初以为是防火墙问题,但我检查了一下,它在 Mac 和 Windows 8 机器上都关闭了(没有费心检查 win7)。当我从终端运行 Node 时,浏览器会等待 localhost,然后最终超时。我已经在这两天了,似乎无法通过谷歌找到任何解决方案。我错过了什么。?

这是我的代码:

var http = require("http");
console.log("file loaded");

http.createServer(function (request, response) {
   request.on("end", function () {
      response.writeHead(200, {
         'Content-Type': 'text/plain'
      });

      response.end('Hello HTTP!');
   });
}).listen(8080);
4

2 回答 2

5

您无需等待 HTTP 请求结束(除了request.on('end', ..)无效且永远不会触发,这就是您超时的原因)。只需发送响应:

var http = require("http");
console.log("file loaded");

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello HTTP!');
}).listen(8080);

尽管如果您想要一种更简单的方法来创建 HTTP 服务器,最简单的方法是使用诸如Express之类的框架。然后您的代码将如下所示:

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

app.get('/', function (req, res) {
  res.set('Content-Type', 'text/plain');
  res.send(200, 'Hello HTTP!');
});

app.listen(8080);
于 2013-08-23T03:06:06.457 回答
0

您还可以使用连接中间件。只需先安装它,npm如下所示:

npm install -g connect

在此之后,您可以制作一个非常简单的应用程序,如下所示:

var app = connect()
  .use(connect.logger('dev'))
  .use(connect.static('public'))
  .use(function(req, res){
    res.end('hello world\n');
  })
 .listen(3000);

您可以在此处获取有关连接 的更多信息。我告诉你使用它,因为你得到一个非常简单的服务器,很容易扩展。但是,如果您想制作拉吹网站,那么我建议使用 expressjs。

于 2013-08-23T03:18:20.550 回答