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?

7voto

SuperNova Punkte 20412
var path = "index.html"

const readFileAsync = fs.readFileSync(path, 'utf8');
// console.log(readFileAsync)

mit einfachen readFileSync funktioniert für mich.

6voto

Masoud Siahkali Punkte 4465
var fs = require('fs');
var path = (process.cwd()+"\\text.txt");

fs.readFile(path , function(err,data)
{
    if(err)
        console.log(err)
    else
        console.log(data.toString());
});

6voto

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

Das liegt einfach daran, dass der Knoten asynchron ist und nicht auf die Lesefunktion wartet. Sobald das Programm startet, wird der Wert als undefiniert angezeigt, was auch stimmt, da der Inhaltsvariablen kein Wert zugewiesen ist. Um dies zu bewältigen, können wir Versprechen, Generatoren usw. verwenden. Wir können Versprechen auf diese Weise verwenden.

new Promise((resolve,reject)=>{
    fs.readFile('./index.html','utf-8',(err, data)=>{
        if (err) {
            reject(err); // in the case of error, control flow goes to the catch block with the error occured.
        }
        else{
            resolve(data);  // in the case of success, control flow goes to the then block with the content of the file.
        }
    });
})
.then((data)=>{
    console.log(data); // use your content of the file here (in this then).    
})
.catch((err)=>{
    throw err; //  handle error here.
})

5voto

rab Punkte 4056

Die folgende Funktion würde funktionieren für async verpacken oder versprechen then Ketten

const readFileAsync =  async (path) => fs.readFileSync(path, 'utf8');

3voto

J. Doe Punkte 525

Können Sie die Datei mit

var readMyFile = function(path, cb) {
      fs.readFile(path, 'utf8', function(err, content) {
        if (err) return cb(err, null);
        cb(null, content);
      });
    };

Darüber hinaus können Sie in eine Datei schreiben,

var createMyFile = (path, data, cb) => {
  fs.writeFile(path, data, function(err) {
    if (err) return console.error(err);
    cb();
  });
};

und sogar aneinander ketten

var readFileAndConvertToSentence = function(path, callback) {
  readMyFile(path, function(err, content) {
    if (err) {
      callback(err, null);
    } else {
      var sentence = content.split('\n').join(' ');
      callback(null, sentence);
    }
  });
};

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