2017-10-28 1 views
-1

Ich bin dran, diese Datei in Nodejs mit FS-Modul zu lesen. Ich bekomme die Antwort zweimal. lass mich wissen, was ich falsch mache. Hier ist mein Code.Wie liest man Dateien mit fs in der Knoten-App?

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); 

Nach dem Aufrufen des Ports im Browser. Ich bekomme die Antwort zweimal in meinem Terminal. Hier ist die Ausgabe.

The end 
this is sample text for the testing. 

The end 
this is sample text for the testing. 
+1

Der Code wird nicht funktionieren folgende tun. Und das Ergebnis passt nicht dazu. –

+0

sample.txt enthält "Dies ist Beispieltext für das Testen." –

Antwort

3

Sie sind höchstwahrscheinlich es zweimal bekommen, weil Sie http://localhost:2000/ aus dem Browser zugreifen.

Dabei werden eigentlich zwei Anfragen gestellt. Ihre eigentliche Anfrage und das Favicon :), die beide von Ihrem Server bearbeitet werden.

Werfen Sie einen Blick in Chrome Debugger -> Netzwerk

enter image description here

+0

Oh .. jetzt verstehe ich es. –

0

Sie können Rohr die Datei an den Client:

fs.createReadStream('sample.txt').pipe(res); 
+0

Ich möchte die Antwort in der Terminalkonsole anzeigen. Ich bekomme die Res zweimal. Ich will nur wissen, warum ich es zweimal bekomme. –

2

Zwei Log-Meldungen angezeigt: eine für/und eine für /favicon.ico

du console.log durch Zugabe überprüfen können (req.url); wird

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); 
+0

Ja, das funktioniert. –

+0

diese Bedingung funktionierte für mich >> if (req.url! = '/favicon.ico') –

1

Eine Anforderung automatisch an favicon.io:

Um dies zu vermeiden. Um die automatische Anforderung an Favicon zu vermeiden, können Sie die

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. 
Verwandte Themen