Node.js服务器无法在Windows 7 64位上启动

时间:2014-07-17 23:09:10

标签: javascript node.js

我的设置似乎有些问题,我目前在Windows 7 64Bit计算机上安装了node -v //v0.10.29

// Include http module.
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);

这是我通过node http.js运行的文件。除此文件外,文件夹中没有其他内容。

运行这个小错误:node-inspector & node --debug http.js在cmd中返回以下内容:

Node Inspector v0.7.4
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.

我可以导航到http://127.0.0.1:8080以及建议的网址,使用debug?etc导航会给我一个控制台,类似于Chrome的开发者工具。

导航到没有参数的网址会向我Cannot GET /发送请求404'

使用上述标题:

Remote Address:127.0.0.1:8080
Request URL:http://127.0.0.1:8080/
Request Method:GET
Status Code:404 Not Found
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:127.0.0.1:8080
Pragma:no-cache
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like  Chrome/35.0.1916.153 Safari/537.36
Response Headersview source
Connection:keep-alive
Content-Type:text/html
Date:Thu, 17 Jul 2014 23:07:13 GMT
Transfer-Encoding:chunked
X-Powered-By:Express

那么如何在node.jswindows 7

中连接到简单的http服务器

1 个答案:

答案 0 :(得分:3)

// Include http module.
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);

要理解这个问题,我们可以做一些实验。

在响应和请求结束事件周围添加控制台日志

console.log("response start");
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
console.log("response end");
request.on("end", function () {
    console.log("request end");
});

输出:

   response start
   response end
   request end

然后注释掉这一行的响应。

console.log("response start");
response.writeHead(200, {'Content-Type': 'text/plain'});
//response.end('Hello World\n');
console.log("response end");
request.on("end", function () {
    console.log("request end");
});

现在请求被卡住了。结束事件永远不会发出。

response start
response end

所以结论是请求的结束事件只在response.end完成后被触发。您不应将您的回复放在请求的结束事件中。