2017-07-18 59 views
0

我一直在试图创建一个程序来保存Slack团队的日志。我有大部分的工作,但迄今无法成功地使用fs.appendFile(),因为文档声称它将创建该文件(如果它不存在)(并且不要使用fs.exists()fs.access()预先检查),但我得到ENOENT错误。无法使用Node.js创建文件fs.appendFile

这是我的函数:

var storeLog = function (username, type, channelName, message) { 
    var pathArr = [loggingDir, type, channelName]; 
    var path = pathArr.join("/") + ".log"; 
    var fullMessage = username + ": " + message; 
    fs.appendFile(path, fullMessage + "\r\n", function (err) { 
     if (err && globalSettings.debugMode) { 
      console.error("Error saving log:\n", err); 
     } 
     else if (globalSettings.debugMode) { 
      console.info("Appended to " + path); 
      console.info(fullMessage); 
     } 
    }); 

}; 

globalSettings.debugMode为true)

err变量有这样的结果:

{ Error: ENOENT: no such file or directory, open 'D:\path\in\settings\Direct Message\username.log' 
    at Error (native) 
    errno: -4058, 
    code: 'ENOENT', 
    syscall: 'open', 
    path: 'D:\\path\\in\\settings\\Direct Message\\username.log' } 
+2

您需要先创建目标目录。 –

回答

2

fs.appendFile()要求你创建的目录中,它会创建该文件,如果它不存在。它不会为你创建目录。

fs.createWriteStream()也是这种情况,您也可以使用a标志。

+0

如果目录不存在,我现在添加了几个fs.mkdir()函数在启动时运行。但是,尽管错误的回调不是truthy编辑:现在工作,目录没有被创建 – Kieran