Node.js无法加载网页连接已超时

时间:2013-05-06 08:11:28

标签: javascript node.js http webserver

我是node.js的初学者,我在这里安装它: https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

我从控制台尝试了它并且它起作用了:

console.log('Hello World!');

nodejs helloConsole.js

> Hello World!

然后我尝试在HTTP Server中创建它,这是代码:

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

我从终端运行它:

nodejs hello.js

然后我在http://localhost:8080/打开浏览器,需要很长时间才能加载,然后在Chrome上它会给我:

Unable to load the webpage because the server sent no data.

并且firefox给了我:

The connection has timed out

注意:其他Web服务器工作正常,如apache。

3 个答案:

答案 0 :(得分:2)

您将监听器附加到request对象,收听end事件,在request抓住该事件之前,您不会看到回复。

要测试一下你可能想要修改它,就像这里提供的那样:http://nodejs.org/

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

答案 1 :(得分:2)

您正在侦听请求参数的“结束”事件,但在调用最外层回调函数时,请求已经结束,因此订阅该事件为时已晚。

您可以直接回复最外层的回调,这是nodejs.org中的示例代码所示。

答案 2 :(得分:0)

尝试以下步骤,如果您使用的是Windows,它可能对您有帮助。

  1. http://nodejs.org/download/
  2. 下载node.exe
  3. Hard Disk Drive放在您想要投放的地方D:/nodejs/node.exe
  4. 现在将hello.js放在同一个directory D:/nodejs/hello.js Command Prompt
  5. 现在从D:/nodejs/转到该文件夹​​node hello.js并运行命令{{1}}