2017-07-18 9 views
0

Ich habe versucht, ein Programm zu erstellen, das Protokolle von einem Slack-Team speichert. Ich habe die meisten Dinge funktioniert, aber bisher konnte fs.appendFile() erfolgreich nicht verwendet werden, da die Dokumentation behauptet, es wird die Datei erstellen, wenn es nicht existiert (und nicht fs.exists() oder fs.access() vorher zu verwenden), aber ich bekomme ein ENOENT-Fehler.Datei kann nicht mit Node.js erstellt werden fs.appendFile

Dies ist meine Funktion:

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 wahr ist)

Die err Variable dieses Ergebnis hat:

{ 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

Sie müssen zuerst Zielverzeichnis erstellen. –

Antwort

2

fs.appendFile() erfordert, dass Sie das Verzeichnis zu erstellen, in dem Es wird die Datei erstellen, wenn sie nicht existiert. Es wird nicht das Verzeichnis für Sie erstellen.

Es ist auch der Fall für fs.createWriteStream(), die Sie auch mit dem a Flag verwenden könnten.

+0

Ich habe jetzt einige fs.mkdir() -Funktionen hinzugefügt, die beim Start ausgeführt werden, wenn das Verzeichnis nicht existiert. Die Verzeichnisse werden jedoch nicht erstellt, obwohl Fehler im Callback nicht truthy sind. EDIT: WORKING NOW – Kieran

Verwandte Themen