const http=require('http');
const fs=require('fs');
var server=http.createServer(getFromClient);
server.listen(3000);
console.log("server start");
function getFromClient(req,res){
fs.readFile('./index.html','utf-8',(error,data)=>{
console.log(data);
console.log("-------------");
var content=data.replace(/dummy_title/g,'Title will be here').replace('dummy_content','Content will be here');
console.log(content);
res.writeHead(200,{'Content-Type':'text/html'});
res.write(content);
res.end();
});
}
当我访问localhost:3000时, console.log(data),console.log(“ -------------”)和console.log(content)在控制台中显示4次
有人可以解释为什么会发生吗?
答案 0 :(得分:0)
那很正常-您的浏览器拨打了多个电话。
例如,大多数浏览器都会调用/favicon.ico。
尝试记录网址:
console.log(req.url);
,您将看到正在调用的内容。 解决此问题的方法可以是检查请求URL是否获取favicon.ico。只需将 req.url!='/favicon.ico'添加到您的代码中
function getFromClient(req,res){
if (req.url != '/favicon.ico') {
fs.readFile('./index.html','utf-8',(error,data)=>{
console.log(data);
console.log("-------------");
var content=data.replace(/dummy_title/g,'Title will be here').replace('dummy_content','Content will be here');
console.log(content);
res.writeHead(200,{'Content-Type':'text/html'});
res.write(content);
res.end();
});
}
}