使用fs.readdir和fs.statSync返回ENOENT,没有这样的文件或目录错误

这工作:

var promise = new Future(), dirs = [], stat; Fs.readdir(Root + p, function(error, files){ _.each(files, function(file) { //stat = Fs.statSync(file); //if ( stat.isDirectory() ) { dirs.push(file); //} }); promise.return(dirs); }); 

这不:

  var promise = new Future(), dirs = [], stat; Fs.readdir(Root + p, function(error, files){ _.each(files, function(file) { stat = Fs.statSync(file); if ( stat.isDirectory() ) { dirs.push(file); } }); promise.return(dirs); }); 

导致“错误:ENOENT,没有这样的文件或目录'字体'”

字体是树中的第一个目录,它确实存在。

我必须错过一些愚蠢的东西。 我只想返回文件夹/目录名称。

当我在这里,有没有人知道如何返回各级目录?

例如,结果可能是:

 [ "fonts", "fonts/font-awesome", "images", "images/somepath", "images/somepath/anotherpath" ] 

这是我的下一个目标,弄清楚我做错了什么。

我感谢帮助!

readdir会给你的文件夹中的条目的名称,而不是整个path。 这将工作:

 stat = Fs.statSync(Root + p + "/" + file); 

整个代码:

 var promise = new Future(), dirs = [], stat, fullPath; Fs.readdir(Root + p, function(error, files){ _.each(files, function(file) { fullPath = Root + p + "/" + file; stat = Fs.statSync(fullPath); if ( stat.isDirectory() ) { dirs.push(fullPath); } }); promise.return(dirs); });