我怎样才能制作事件处理程序
2021-05-06
435
我完成了命令处理程序,但出现了错误,想知道社区中是否有人可以帮助我解决该问题?
我的代码:
const fs = require('fs');
module.exports = (client, Discord) => {
const load_dir = (dir) => {
const event_files = fs.readdirsync(`./events/${dirs}`).filter(file =>
file.endsWith(`.js`));
for (const file of event_files){
const event = require(`./events/${dirs}/${file}`);
const event_name = file.split('.')[0];
client.on(event_name, event.bind(null, Discord, client));
}
}
['client', 'guild'].forEach(e => load_dir(e));
}
我的错误:
ReferenceError: dirs is not defined
at load_dir (/home/runner/Buddy-Bot/handlers/event_handler.js:5:50)
at /home/runner/Buddy-Bot/handlers/event_handler.js:14:35
at Array.forEach (<anonymous>)
at module.exports (/home/runner/Buddy-Bot/handlers/event_handler.js:14:22)
at /home/runner/Buddy-Bot/index.js:11:34
at Array.forEach (<anonymous>)
at /home/runner/Buddy-Bot/index.js:10:38
at Script.runInContext (vm.js:130:18)
at Object.<anonymous> (/run_dir/interp.js:209:20)
at Module._compile (internal/modules/cjs/loader.js:999:30)
如果您能提供帮助,我将不胜感激!
2个回答
您使用的是
dirs
,但实际上并没有这样的变量。我认为您应该使用
dir
。
Juan Pablo
2021-05-06
这很简单,当它显示
ReferenceError: dirs is not defined
这意味着您尝试使用尚不存在的变量。
将“dirs”更改为 dir,它应该可以解决您的问题。
已修复代码:
const fs = require('fs');
module.exports = (client, Discord) => {
const load_dir = (dir) => {
const event_files = fs.readdirSync(`./events/${dir}`).filter(file =>
file.endsWith(`.js`));
for (const file of event_files){
const event = require(`./events/${dir}/${file}`);
const event_name = file.split('.')[0];
client.on(event_name, event.bind(null, Discord, client));
}
}
['client', 'guild'].forEach(e => load_dir(e));
}
当您看到这样的错误时,您应该尝试找到有问题的文件。如果您在此之前正在编辑主文件,请尝试查找“index.js”。如果是另一个文件,请找到该文件。接下来,找到发生错误的行。您可以在这里找到它:
at /home/runner/Buddy-Bot/index.js:**11**:34
。
我还发现您的代码还有另外两个问题,将 readdirsync 更改为 readdirSync。Node.js 区分大小写。第二个问题是 modules.exports 没有 s,将其更改为
module.exports
感谢阅读!
Unknown1789
2021-05-08