Lesen der Datei mit ES6 verspricht

let arr = [];

function getData(fileName, type) {
    return fs.readFile(fileName,'utf8', (err, data) => {
        if (err) throw err;

        return new Promise(function(resolve, reject) {
            for (let i = 0; i < data.length; i++) {
                arr.push(data[i]);
            }

            resolve();
        });
    });
}

getData('./file.txt', 'sample').then((data) => {
    console.log(data);
});

Wenn ich obigen code und führen Sie es in der Befehlszeile mithilfe von nodejs, bekomme ich folgende Fehlermeldung.

getData('./file.txt', 'sample').then((data) => {
                               ^

TypeError: Cannot read property 'then' of undefined

Wie kann ich dieses Problem lösen?

Swap return fs.readFile mit return new Promise(). Du bist der Rückkehr fs.readFile welche keinen Rückgabewert hat.
und sollten Sie reject statt throw
Wie schon angedeutet, von Marty sind Sie wieder, die Ergebnis des fs.readFile() ist nicht ein Versprechen per definition als die aktuelle version. Sie sind wohl verwirrt, beruht auf der Tatsache, dass in einer then() anderen Versprechen zurückgegeben werden, und würde dann verkettet werden.

InformationsquelleAutor 2619 | 2016-12-17

Schreibe einen Kommentar