結果は私にとっては予期せぬものです。ディレクトリを検索してすべてのファイルとサブフォルダを取得しようとしていますが、サブディレクトリのサブディレクトリを扱う際に問題があります。関数自体は、指定されたフォルダ内のすべてのフォルダとすべてのファイルのすべての内容を検索し、フォルダ内のオブジェクトの1つがフォルダである場合に呼び出されるように設計されています。予期しない結果を与えるnode.jsの再帰関数
しかし、それは決して終わらない、それはそれ自体に同じフォルダを供給し、決してそれと何もしない、最終的にちょうどクラッシュする。
var fs = require('fs');
var array = fs.readdirSync(__dirname);
function getAllSub(array){
for (i = 0; i < array.length; i++){
if (array[i].indexOf(".") == (-1))
{
array = array.concat(array[i] + "/" + fs.readdirSync(__dirname + "/" + array[i]));
}
if (array[i].indexOf("/") != (-1)){
var foldcon = array[i].substr(array[i].indexOf("/") + 1);
var folder = array[i].substr(0, array[i].indexOf("/"));
foldcon = foldcon.split(",");
for (n = 0; n < foldcon.length; n++){
foldcon[n] = folder + "/" + foldcon[n]
if (foldcon[n].indexOf(".") == (-1)){
console.log([foldcon[n]]);
foldcon[n] = getAllSub([foldcon[n]]);
}
}
array.splice(i, 1, foldcon);
}
}
return array;
}
array = getAllSub(array);
console.log(array);
ああおかげで、再び私は、すべての機能を知りません。そして私がreaddirの同期バージョンを使用していた唯一の理由は、サーバを起動する前にその機能を起動させてから、すべてのファイルとフォルダの配列を与えるためです。 – Hallucigenia95