添加discord.js命令后Nodemon卡在clean exit无法运行如何解决
问题根源
你的代码存在多个核心错误导致程序启动后直接退出,nodemon自然显示clean exit等待修改:
client.login被写在了第二个message事件的回调内部,程序启动时不会执行登录逻辑,没有异步任务挂起,代码运行完直接结束进程。- 事件监听器嵌套注册:
!ns、!uptime对应的事件监听器都套在另一个message事件回调里,每收到一次消息就会重复注册一次,引发重复响应、内存泄漏问题。 - discord.js v13 已废弃
message事件,需替换为messageCreate才能正常接收消息。 - 之前添加的不完整代码存在括号/花括号未闭合的语法错误,删除后要确认所有语法结构正确闭合。
解决步骤
- 把
client.login(process.env.token_renren)移到所有代码的最外层末尾,不要放在任何事件回调内部。 - 把所有嵌套的
client.on事件监听器挪到外层,和!ping对应的事件平级。 - 将所有
client.on("message", ...)替换为client.on("messageCreate", ...)。 - 检查所有括号、花括号的闭合情况,消除语法错误。
修正后的完整index.js参考
require('dotenv').config(); const { Client, Intents } = require('discord.js'); const client = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MESSAGE_TYPING, Intents.FLAGS.GUILD_PRESENCES ] }); const prefix = '!'; client.on('ready', () => { console.log('SHOWTIME!!'); client.user.setStatus('idle'); }); client.on("messageCreate", (message) => { if (message.content == "!ping") { message.channel.send("Pinging ...") .then((msg) => { msg.edit("Pong! " + (Date.now() - message.createdTimestamp)); }); } }); client.on("messageCreate", (message) => { if (message.author.bot) return; if (message.content == "!help") { message.channel.send("What can I help you with?") .then((msg) => { msg.react("1️⃣") .then(() => msg.react("2️⃣")) .then(() => msg.react("⏹")); }); } }); client.on("messageCreate", (message) => { if (message.content == "!ns") { message.react("🔜"); message.reply('The next session is scheduled for ...!'); } }); client.on("messageCreate", async (message) => { if (message.author.bot) return; if (message.content == "!uptime") { message.react("✨"); let days = Math.floor(client.uptime / 86400000); let hours = Math.floor(client.uptime / 3600000) % 24; let minutes = Math.floor(client.uptime / 60000) % 60; let seconds = Math.floor(client.uptime / 1000) % 60; message.channel.send(`__I have been online for...__\n${days}d ${hours}h ${minutes}m ${seconds}s!`); } }); client.login(process.env.token_renren);
修改完成后重新运行npm run dev即可正常启动。
内容的提问来源于stack exchange,提问作者Kashi Wolfe
相关产品推荐
相关产品推荐

