2016-08-03 26 views
1

Ich habe einen ziemlich einfachen Aufruf zum Schreiben einer Datei (Erstellen der Verzeichnisstruktur, falls erforderlich).fs.writeFileSync geben ENOENT Fehler unter Windows

writeFileSync(fileName, output, { flag: "w" }); 

Unter Mac OS X dies wie erwartet funktioniert ... Unter Windows bekomme ich jedoch einen ENOENT Fehler:

fs.js:549 
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); 

Error: ENOENT: no such file or directory, open 'C:\mydir\myfile.json' 
at Error (native) 
at Object.fs.openSync (fs.js:549:18) 
at Object.fs.writeFileSync (fs.js:1156:15) 
at ... 
at FSReqWrap.oncomplete (fs.js:82:15) 

ich wirklich hier bei einem Verlust bin b/c der Dateipfad aufgelistet ist korrekt und gültig. Außerdem funktioniert das genau so, wie ich es auf Mac OS X haben möchte.

Jede Hilfe würde sehr geschätzt werden. Danke!

+3

Auf Windows Pfadtrennzeichen sind unterschiedlich. Wenn du deinen Pfad verwendest ('Pfad') Modul, das eingebaut wird. So etwas wie var Dateiname = Pfad.join ("/ logs", "deinDateiname"); –

+0

Dank @MykolaBorysyuk - Das war es ... Ich war schuld an dem boneheaded Fehler, meine Pfade manuell mit 'myDumbArrayOfPathString.join ('/')' zu erstellen ... Sobald ich 'path.join (...) implementiert habe 'Alles ist gut. Danke für die schnelle Hilfe! – christophersw

Antwort

2

war ich mit dümmlich

mySimpleArrayOfStrings.join('/'); // not the way to build a path 

Statt sehr von der

path.join(...); // This is much better! Use this... 
nützlich

Durch diesen Pfad nicht verwendet wurde, wurde Buchhaltung ich nicht für die unterschiedlichen Pfadtrenn in Windows.

Riesige Dank an @MykolaBorysyuk!