当您点击URL时在nodejs中进行请求和响应

时间:2019-01-26 13:17:59

标签: node.js

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次​​

有人可以解释为什么会发生吗?

1 个答案:

答案 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();
        });
    }
}