Estoy tratando de leer este archivo en nodejs usando el módulo fs. Recibo la respuesta dos veces. déjame saber qué estoy haciendo mal. Aquí está mi código.

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

http.createServer(function(req, res) {
  fs.readFile('sample.txt', function(err, sampleData) {
    console.log(String(sampleData));
    //res.end();
    });
  console.log("The end");
  // res.writeHead(200);
  res.end();
}).listen(2000);

Después de golpear el puerto en el navegador. Recibo la respuesta dos veces en mi terminal. Aquí está la salida.

The end
this is sample text for the testing.

The end
this is sample text for the testing.
-1
Sarvesh Redkar 28 oct. 2017 a las 16:06

3 respuestas

Se realiza una solicitud a favicon.io automáticamente. Para evitar la solicitud automática de favicon, puede hacer lo siguiente

http.createServer(function(req, res){
    if(req.url != '/favicon.ico'){
        fs.readFile('sample.txt', function(err , sampleData){
            console.log(String(sampleData));
            res.end();
        });
       console.log("The end");
    }

}).listen(2000);

O / p =>

The end.
this is sample text for the testing.
1
Himansingh 28 oct. 2017 a las 13:58

Puede canalizar el archivo al cliente:

fs.createReadStream('sample.txt').pipe(res);
0
Jonas Wilms 28 oct. 2017 a las 13:09

Aparecerán dos mensajes de registro: uno para / y otro para /favicon.ico

Puede verificar esto agregando console.log (req.url);

Para evitar esto:

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

    http.createServer(function(req, res){
    if(req.url === '/'){  // or if(req.url != '/faicon.ico'){
        fs.readFile('sample.txt', function(err , sampleData){
            console.log(String(sampleData));
            res.end();
        });
    console.log("The end");
    }

    // res.writeHead(200);
}).listen(2000);
2
Sarvesh Redkar 28 oct. 2017 a las 13:56