我一直试图使用需要在节点fs模块加载,它一直给我无效的回调错误,我如何纠正这一点



源代码:

console.log('Starting app.');
const fs = require('fs');
fs.appendFile('greetings.txt', 'Hello world!');
fs.appendFileSync('greetings.txt', 'Hello world!');

当我在终端中加载应用程序时,它一直给我这个错误信息。

fs.appendFile()是该接口的异步版本,它要求最后一个参数是一个回调,给你完成和/或错误条件。

见文档

fs.appendFile(path, data[, options], callback)

回调是不可选的。

这个函数的正确用法是:

fs.appendFile('greetings.txt', 'Hello world!', err => {
    if (err) {
         console.log(err);
    } else {
         console.log("data appended successfully");
    }
});

另外,请注意,这是异步的和非阻塞的,所以回调将在一段不确定的时间后被调用(当追加结束时),但在此之后的下一行代码将立即执行(在回调被调用之前)。


其他相关接口为异步接口的承诺版本:

fs.promises.appendFile(path, data[, options])

你没有传递回调给这个版本。相反,它返回一个承诺,你可以用它来获得完成/错误的通知。

fs.promises.appendFile('greetings.txt', 'Hello world!').then(() => {
    console.log("data appended successfully");
}).catch(err => {
    console.log(err);
});

对于异步接口,promise版本更新,被认为更现代。

最新更新