NodeJS从目录/子目录中读取文件

时间:2019-04-29 21:30:30

标签: node.js directory fs

我在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文件夹,但没有读取其中的文件。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您希望结果是对象或Map,而不是数组。

let results = {};

使用数组来列出元素,但是在这种情况下,您要将文件名映射到文件。对象类似于地图,但是键必须始终为字符串(在这种情况下)。