2016-08-03 62 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!