无法使用 Node.js fs.appendFile 创建文件

Cannot create file with Node.js fs.appendFile

我一直在尝试创建一个程序来保存 Slack 团队的日志。我有大部分工作,但到目前为止无法成功使用 fs.appendFile(),因为文档声称如果文件不存在它将创建文件(而不是使用 fs.exists()fs.access() 事先检查),但我收到了 ENOENT 错误。

这是我的功能:

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 为真)

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' }

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

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