我试图在没有快递的情况下创建服务器。识别网址,然后用html回答。
如果网址是' /'响应是index.html,如果网址是' / bio'响应是bio.html
问题是当我想回到' /'并在' / bio'
之后获得索引http.createServer(function (req,res){
var pathName = url.parse(req.url).pathname;
console.log(pathName);
if(pathName === '/bio'){
fs.readFile("./bio.html", function (a, bio){
res.writeHead(200, {"Content-Type": "text/html"});
res.write(bio);
res.end();
});
};
fs.readFile('./index.html', function(err, index){
console.log(req.url);
res.writeHead(200, {"Content-Type": "text/html"});
res.write(index);
res.end();
});
}).listen(8888);
我什么时候应该结束回复?
答案 0 :(得分:1)
从技术上讲,您应该只允许一个代码分支调用res.end()
。
在您的情况下,代码应该如下所示
if(pathName === '/bio'){
fs.readFile("./bio.html", function (a, bio){
res.writeHead(200, {"Content-Type": "text/html"});
res.write(bio);
res.end();
});
}
else {
fs.readFile('./index.html', function(err, index){
console.log(req.url);
res.writeHead(200, {"Content-Type": "text/html"});
res.write(index);
res.end();
});
}
我建议引入一个通用的静态文件处理程序:
// assuming we have access to the current `res` object
function serveStatic(filePath, callback) {
fs.readFile(filePath, function () {
res.writeHead(200, {"Content-Type": "text/html"});
res.write(bio);
res.end();
callback();
})
}
var filePath;
if(pathName === '/bio') {
filePath = './bio.html';
}
else {
filePath = './index.html';
}
serveStatic(filePath, function () {
console.log('Done!');
});
答案 1 :(得分:0)
您需要在发送回复时停止流程,尝试return res.end()
代替res.end()
。