Heroku: как получить доступ к нескольким файлам .js

#javascript #github #heroku #discord.js

Вопрос:

ошибка

Я получаю это сообщение об ошибке на heroku, и я думаю, что я получаю его из-за Procfile. героку

В данный момент я использую Worker, но пытаюсь понять, как получить доступ к heroku и к тому, и к другому index.js и ping.js. Если только я не читаю сообщение об ошибке совершенно неправильно, и это может быть другой проблемой. Любая помощь будет признательна!

ИЗМЕНИТЬ: Вот мой код для index.js

 const Discord = require('discord.js'); const music = require('@koenie06/discord.js-music'); const fs = require('fs'); const { dir } = require('console'); const bot = new Discord.Client({  shards: "auto",  intents: [  Discord.Intents.FLAGS.GUILDS,  Discord.Intents.FLAGS.GUILD_MESSAGES,  Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS,  Discord.Intents.FLAGS.DIRECT_MESSAGES,  Discord.Intents.FLAGS.GUILD_VOICE_STATES  ] });  bot.commands = new Discord.Collection(); bot.aliases = new Discord.Collection();  //Command handler and aliases fs.readdirSync('./commands/').forEach(dir =gt; {  //in the commands folder, we gonna check for the category  fs.readdir(`./commands/${dir}`, (err, files) =gt; {  //console log error(catch error)  if(err)throw err;  //checking if the files ends with .js if its a javascript file  var jsFiles = files.filter(f =gt; f.split('.').pop() === 'js');  //if there is no commands in the file it will return  if(jsFiles.length lt;= 0) {  console.log("Can't find any commands");  return;  }   jsFiles.forEach(file =gt; {  //console the loaded commands  var fileGet = require(`./commands/${dir}/${file}`);  console.log(`[COMMAND HANDLER] - File ${file} was loaded`);  //gonna let the commands run  try {  bot.commands.set(fileGet.help.name, fileGet);  // it search in the commands folder if there is any aliases  fileGet.help.aliases.forEach(alias =gt; {  bot.aliases.set(alias, fileGet.help.name);  })  } catch(err) {  //catch error in console  return console.log(err);  }  })  }) })   /**  * ECHO STUFF  */   //slash command to echo  bot.on('ready', async () =gt; {  bot.user.setPresence({ activities: [{ name: "Tedi", type: "WATCHING"}] });  console.log("bye");  const data = {  name: 'echo',  description: 'Echo your text',  options: [{  name: 'text',  type: 'STRING',  description: 'The user input',  required: true,  }],  }; const command = await bot.guilds.cache.get('872986148681703444')?.commands.create(data); })  bot.on('messageCreate', async message =gt; {  if(message.author.bot || message.channel.type == 'DM') return   let prefix = '~'  let messageArray = message.content.split(' ');  let cmd = messsageArray[0];  let args = messageArray.slice(1);   //it will make the cmd work with his original name and his aliases  let commands = bot.commands.get(cmd.slice(prefix.length)) || bot.commands.get(bot.aliases.get(cmd.slice(prefix.length)));  if(commands) {  if(!message.content.startsWith(prefix)) return  commands.run(bot, message, args, prefix);  } })  //interactionCreate for echo slash command bot.on('interactionCreate', async interaction =gt; {  /**  * isButton() used to check if its a button  * isCommand() used to check if its a slash command  * isSelectMenu() used to check if its a dropdown menu  * isMessageComponent()  */  if(interaction.isCommand()) {  if(interaction.commandName === 'echo') {  const text = interaction.options.getString('text');  await interaction.reply({ content: text, ephemeral: false}); //if ephemeral if true, it would make the slash command private  }  } })  bot.login(process.env.token);  

Вот мой ping.js

 const Discord = require("discord.js");  module.exports.run = async (Client, message, args, prefix) =gt; {  message.channel.send("pong") }  module.exports.help = {  name: "ping",  aliases: ["p"] }  

Комментарии:

1. Скорее всего, это не проблема heroku, но это поможет нам решить вашу проблему, если вы опубликуете код затронутого файла.

Ответ №1:

Эта ошибка не из-за Heroku, это в основном потому, что в вашем обработчике команд есть файл, у которого при обработке нет имени, как, например, в этом коде здесь:

 const Discord = require("discord.js");  module.exports.run = async (Client, message, args, prefix) =gt; {  message.channel.send("pong") }  module.exports.help = {  // here the name isn't included  aliases: ["p"] }  // so just check if you have a file without a name while handling it and put a name, and if you don't want aliases make it `aliases: []`  

Этот обработчик команд должен быть похож на эту
папку команд команды gt; Подпапка, например, Модерация gt;gt; kick.jsgt;gt;
Вот как это работает, также спасибо, что посмотрели мои видео, я ультрах 🙂