我在那里有一个简单的问题:

我正在使用Node.JS编写命令行工具来验证具有JSON模式的JSON文件。因此,现在我有一个问题,当想要获取所有模式时,使用异步函数时总是会出现“未定义”的情况,否则只能使用同步函数。

对于此命令行工具,不需要异步。

有人可以帮助我,并帮助我使它正常工作吗?

var getJSONSchemaFiles = function (dir) {
results2 = [];


    var recursive = require('recursive-readdir');

    recursive(dir, function (err, files) {
        // Files is an array of filename
      //  console.log(files);

        files.forEach(function (entry) {

            if (entry.indexOf(".schema.json") > -1) {

                results2.push(entry);

            }
        });
        console.log(results2);

    });

        return results2;

};


我正在使用npm“ recursive-readdir”,但是我认为我甚至不需要npm来进行此类操作?

最佳答案

好的,这将枚举给定路径下的所有文件:

var fs = require('fs');

function recursiveReaddir(path) {
    var stat = fs.lstatSync(path);
    if(stat.isFile())
        return [path];
    if(!stat.isDirectory())
        return [];
    return [].concat.apply([], fs.readdirSync(path).map(function(fname) {
        return recursiveReaddir(path + '/' + fname);
    }));
}

09-25 20:17