364 Stimmen

Daten von fs.readFile abrufen

var content;
fs.readFile('./Index.html', function read(err, data) {
    if (err) {
        throw err;
    }
    content = data;
});
console.log(content);

Protokolle undefined warum?

3voto

DayIsGreen Punkte 245

Grob gesagt, haben Sie es mit Node.js zu tun, das von Natur aus asynchron ist.

Wenn wir von Asynchronität sprechen, meinen wir die Verarbeitung von Informationen oder Daten, während wir mit etwas anderem beschäftigt sind. Es ist nicht gleichbedeutend mit parallel, bitte denken Sie daran.

Ihr Code:

var content;
fs.readFile('./Index.html', function read(err, data) {
    if (err) {
        throw err;
    }
    content = data;
});
console.log(content);

Bei Ihrem Beispiel wird im Grunde zuerst der console.log-Teil ausgeführt, so dass die Variable "content" undefiniert ist.

Wenn Sie die Ausgabe wirklich wollen, machen Sie stattdessen etwas wie das hier:

var content;
fs.readFile('./Index.html', function read(err, data) {
    if (err) {
        throw err;
    }
    content = data;
    console.log(content);
});

Dies ist ein asynchroner Vorgang. Es wird schwer sein, sich daran zu gewöhnen, aber es ist, was es ist. Auch dies ist eine grobe, aber schnelle Erklärung, was async ist.

0voto

Doug Barbieri Punkte 575

Ich benutze gerne fs-extra weil alle Funktionen sofort nach dem Auspacken zur Verfügung stehen, so dass Sie sie nutzen können await . Ihr Code könnte also wie folgt aussehen:

(async () => {
   try {
      const content = await fs.readFile('./Index.html');
      console.log(content);
   } catch (err) {
      console.error(err);
   }
})();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X