写入文件而无需回调Node js

时间:2019-04-19 20:27:24

标签: node.js

如何编写没有回调的writeFile()函数?

这不起作用:

fs.writeFile("/logs/file.log", 'Message')

fs.writeFile("/logs/file.log", 'Message',null)

两者都抛出一个:

TypeError [ERR_INVALID_CALLBACK]: Callback must be a function

我需要实现一个非阻塞解决方案。

4 个答案:

答案 0 :(得分:4)

  

我需要实现一个非阻塞解决方案。

因此,您必须使用 ASYNC 功能而不是同步。

writefile()是一个异步函数,因此需要一个callback function

var fs = require('fs');
fs.writeFile("/logs/file.log", "Message", function(err) {
    if(err) {
        return console.log(err);
    }

    console.log("The file is saved!");
}); 

答案 1 :(得分:2)

uniqueidentifier

如果您根本不必通过回调函数,请创建另一个函数:

_HIS

更好的是,// create a noop - as in "no operation" const noop = () => {}; // and pass that in fs.writeFile("filename.txt", "content", noop); 函数:

const writeFile = (filename, content) => {fs.writeFile(filename, content, () => {}));

// and use it like this
writeFile("filename.txt", "content");

答案 2 :(得分:1)

您可以使用writeFile代替使用writeFileSyncwriteFile要求传递回调,而writeFileSync不需要回调函数。有关更多信息,您可以参考writeFileSync NodeJS文档

这应该为您工作

fs.writeFileSync("/logs/file.log", 'Message')

在阅读您对问题的评论时,如果您希望坚持使用writeFile,则需要传递回调函数,因为它是异步的。您可以通过编写来缩短它

fs.writeFile("/logs/file.log", 'Message', () => {})

答案 3 :(得分:1)

如果您真的不关心结果(错误是/否),则可以解决问题。

fs.writeFile("/logs/file.log", 'Message', () => {})