2016-08-03 124 views
1

我有一個相當簡單的調用來寫入文件(如果需要,創建目錄結構)。fs.writeFileSync在Windows上給出ENOENT錯誤

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

在Mac OS X可正常工作......在Windows,但是,我得到一個錯誤ENOENT:

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) 

我不知所措我真的在這裏B/C的文件路徑列出的是正確和有效的。此外,這種方式正是我想要的Mac OS X上的方式。

任何幫助將不勝感激。 謝謝!

+3

在windows路徑分隔符上是不同的。當你讓你的路徑使用('路徑')內置模塊。像這樣的事情var fileName = path.join(「/ logs」,「yourfilename」); –

+0

Thanks @MykolaBorysyuk - 就是這樣......我是用myDumbArrayOfPathString.join('/')'手動構建我的路徑的骨頭錯誤......一旦我實現了'path.join(...) 「一切都很好。感謝您的快速幫助! – christophersw

回答

2

我愚蠢地使用

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

取而代之的是非常有用的

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

由於不使用這條道路,我沒有佔在Windows中不同的路徑分隔符。

非常感謝@MykolaBorysyuk!