Javascript 使用节点js和fs列出dir、sub dir及其文件

Javascript 使用节点js和fs列出dir、sub dir及其文件,javascript,node.js,fs,Javascript,Node.js,Fs,因此,我试图制作一个简单的函数,将列出一个设置目录中的所有文件和文件夹,在我的情况下,这些文件是“攻击模块”,但无论如何,我已经让下面的函数工作了一点,但如果有任何包含文件的子文件夹,它将崩溃 function getAttackModuleFiles(where, name, parentFolder){ var parentFolder = parentFolder console.log('p1 '+parentFolder) sub++ var path = 'admi

因此,我试图制作一个简单的函数,将列出一个设置目录中的所有文件和文件夹,在我的情况下,这些文件是“攻击模块”,但无论如何,我已经让下面的函数工作了一点,但如果有任何包含文件的子文件夹,它将崩溃

function getAttackModuleFiles(where, name, parentFolder){
  var parentFolder = parentFolder
  console.log('p1 '+parentFolder)
  sub++

  var path = 'adminPanel/attackModules/'
  fs.readdir(where, (err, files) => {
    if(err){
      console.log(err)
    }
    files.forEach(name => {
      console.log(sub)
      var stats = fs.statSync(where+name);
        if(stats.isFile() == true){
          var dir = path+parentFolder+'/'+name
          socket.emit('attackModule','file',name, parentFolder, sub, dir)
        }if(stats.isDirectory() == true){

            /*
            if(sub == 2){

            getAttackModuleFiles(path+name+'/',name, name)
            //getAttackModuleFiles(path+parentFolder+'/'+name+'/',name, parentFolder)
            socket.emit('attackModule','dir',name, name, sub)

          }else
           if( sub ==1){
           */

          getAttackModuleFiles(path+name+'/',name, name)
          console.log(name)
          socket.emit('attackModule','dir',name, name, sub)
         // }
        }
     });
  })
}

我还没有足够的js知识,不知道如何解决这个问题。有人能帮我弄清楚如何无限地列出文件和文件夹吗

  • 它递归地遍历文件和文件夹,我们根本不需要循环
  • 它会发出各种可以监听的事件,例如查找目录、查找文件、查找符号链接、出错等事件

    var walker    = require('walker');
    
    if (process.argv.length <= 2) {
        console.log("Usage: " + __filename + " path/to/directory");
        process.exit(-1);
    }
    
    var path = process.argv[2];
    
    walker(path)
        .on('dir', function(dir, stat) {
            console.log('Got directory: ' + dir)
        })
        .on('file', function(file, stat) {
            console.log('Got file: ' + file)
        })
        .on('end', function() {
            console.log('All files traversed.')
        });
    
    var walker=require('walker');
    if(process.argv.length