2

I am trying to change my code to include files in subdirectories as well:

const commandFiles = fs.readdirSync("./commands").filter(file => file.endsWith(".js")); for (const file of commandFiles) { const command = require(`./commands/${file}`); client.commands.set(command.name, command); } 

I found a solution that looks a bit abstract to me, when I tried to implement it, I got a error, this is what I tried:

const { readdirSync, statSync } = require('fs'); const { join } = require('path'); const dirs = p => readdirSync(p).filter(f => statSync(join(p, f)).isDirectory()) const commandFiles = ('./commands'); for (const file of commandFiles) { const command = require(`./commands/${file}`); client.commands.set(command.name, command); } 

I got the following error:

Error: Cannot find module './commands/.' 

What can I do to make this work?

2 Answers 2

2

Got it to work with

const fs = require('fs'); const walk = function(dir) { let results = []; const list = fs.readdirSync(dir); list.forEach(function(file) { file = dir + '/' + file; file_type = file.split(".").pop(); file_name = file.split(/(\\|\/)/g).pop(); const stat = fs.statSync(file); if (stat && stat.isDirectory()) { results = results.concat(walk(file)); } else { if (file_type == "js") results.push(file); } }); return results; } const commandFiles = walk('./commands'); for (const file of commandFiles) { const command = require(`${file}`); 
Sign up to request clarification or add additional context in comments.

Comments

0

Just use __dirname

const commandFiles = fs.readdirSync(__dirname+'/commands').filter(file => file.endsWith('.js')); 

Comments