我在NodeJS中苦苦挣扎。我想做的就是读取目录和文件的子目录。听起来很容易,我被卡住了。我尝试了在另一个线程中在SO上找到的解决方案,但似乎并没有从子目录中读取文件,而只是从它到达的第一个目录中读取文件。该功能在下面的含义是从给定目录加载所有控制器。
let walk = function(dir) {
let results = [];
let items = fs.readdirSync(dir);
items.forEach(function(item) {
let currentItem = path.join(dir, item);
let stat = fs.lstatSync(currentItem);
if (stat && stat.isDirectory()) {
let dirName = path.parse(currentItem).name;
results[dirName] = results.concat(walk(currentItem));
} else {
let fileName = path.parse(currentItem).name;
results[fileName] = currentItem;
}
});
return results;
};
const Controller = walk('app/Http/Controllers');
日志看起来像这样
[ Auth: [],
Controller: 'app\\Http\\Controllers\\Controller.js',
HomeController: 'app\\Http\\Controllers\\HomeController.js'
]
问题在于读取了Auth文件夹,但没有读取其中的文件。我在做什么错了?
答案 0 :(得分:1)
您希望结果是对象或Map,而不是数组。
let results = {};
使用数组来列出元素,但是在这种情况下,您要将文件名映射到文件。对象类似于地图,但是键必须始终为字符串(在这种情况下)。