我的设置似乎有些问题,我目前在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.js
和windows 7
答案 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完成后被触发。您不应将您的回复放在请求的结束事件中。