readfile()回调调用两次

goe*_*ash 4 javascript node.js

我是nodejs和callbacks的新手.

所以我有这个代码,当我通过HTTP启动对服务器的请求时,我读取文件:

var http = require("http");
var fs = require("fs");

http.createServer(function(request,response){

    response.writeHead(200,{'Content-Type':'text/plain'});
    response.end("Server runnning...");

    fs.readFile('new.txt',function(err,data){
        if(err){
            console.error(err);
            return;
        }
        console.log(data.toString());
    });

}).listen(1234);
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,文件的内容在控制台上显示/记录两次.

lorem ipsum
lorem ipsum
Run Code Online (Sandbox Code Playgroud)

文件内容是:

lorem ipsum
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 7

当您在浏览器的地址栏中键入URL时,它通常会发出两个请求:

  • 一个用于您要查看的页面
  • 一个用于 /favicon.ico

两个请求意味着两次调用,fs.readFile因为您为每个请求调用了它.