var http = require('http');
var fs = require('fs');
var path = process.argv[2];
var str="";
function onRequest(request, response) {
str += "";
console.log("Request received" + path);
fs.readdir(path, function(err, items) {
str += items;
});
response.writeHead(200, {"Context-Type": "text/plain"});
response.write(new Buffer(str).toString());
response.end();
}
http.createServer(onRequest).listen(8000);
上面的代码片段创建了一个http服务器,它从用户获取一个目录路径作为参数。发出http请求以获取目录中可用的文件列表,并将其作为响应发送回去。
仅在第二个请求时将响应写入页面。第一次请求时页面显示为空。
任何人都可以提供帮助。在此先感谢!!
答案 0 :(得分:1)
Javascript是非阻止的,所以
response.writeHead(200, {"Context-Type": "text/plain"});
response.write(new Buffer(str).toString());
response.end();
将在
之前执行str += items;
使用
fs.readdir(path, function(err, items) {
// Handle error
str += items;
response.writeHead(200, {"Context-Type": "text/plain"});
response.write(new Buffer(str).toString());
response.end();
});
它会在readdir
之后发送回复。
在Javascript中,不会为每个新请求启动程序(如在PHP中)。因此,您的全局变量将在所有请求之间共享。如果您不希望将var str="";
放入onRequest
。
如果您有多条路线,您还希望查看express之类的内容,因为http
模块不包含路由。