在浏览器输入http://localhost:8080/
时,会返回404,原因是程序识别出HTTP请求的不是文件,而是目录。请修改file_server.js
,如果遇到请求的路径是目录,则自动在目录下依次搜索index.html
、default.html
,如果找到了,就返回HTML文件的内容。
'use strict'
var
fs = require('fs'),
url = require('url'),
path = require('path'),
http = require('http');
var root = path.resolve(process.argv[2] || '.');
console.log(root);
var server = http.createServer(function(request,response){
//console.log(url.parse(request.url))
var pathname = url.parse(request.url).pathname;
console.log(request.url)
var filepath = path.join(root,pathname);
console.log(filepath)
fs.stat(filepath,function(err,stats){
if(!err && stats.isFile()){
console.log('200' + request.url);
response.writeHead(200);
//console.log(response);
fs.createReadStream(filepath).pipe(response);
}else{
if(stats.isDirectory()){
console.log('dir yes')
fs.readdir(filepath,function(err,files){
if(err){
console.log('readdir error');
}else{
files.forEach(function(f){
if(f.indexOf('index.html')===0 || f.indexOf('default.html') ===0){
fs.createReadStream(path.join(filepath,f)).pipe(response);}
})
}
})
}else{
console.log('dir err')
}
}
})
})
server.listen(8080);
console.log('start.....');