Проблемы с хостингом Heroku (дискорд бот) - PullRequest
0 голосов
/ 08 апреля 2020

Heroku не позволяет мне запускать приложение, так как оно остается включенным в течение нескольких секунд, и затем это происходит:

2020-04-07T23:11:35.586817+00:00 heroku[web.1]: State changed from starting to crashed
2020-04-07T23:11:35.597942+00:00 heroku[web.1]: State changed from crashed to starting

После этого Heroku перезапускает приложение, и приведенный выше код отображается еще один время (на этот раз перезапуска нет, просто cra sh).

2020-04-07T23:12:38.593514+00:00 heroku[web.1]: State changed from starting to crashed

Я искал проблемы в своем коде и не мог их найти, поэтому удалил все и сделал мой основной файл core.js единственный диск-бот, который просто посылает сообщение для встраивания с заголовком:

const { Client, MessageEmbed } = require('discord.js')
const client = new Client()
let channel = null

client.on('ready', () => {
  console.log(`bot ${client.user.tag} running`)
  channel = client.channels.cache.find(ch => /generic_channel_name/.test(ch.name))

  const embed = new MessageEmbed()
    .setTitle('Commom title')
    .setColor('#ffff00');
    channel.send(embed)
})

client.login(config.token)

Даже один setInterval заставляет Heroku взломать sh приложение:

setInterval(() => {
  console.log('Testing')
}, 3000)

Я действительно много чего перепробовал, но единственное, что я не сделал, не смог sh - это просто для l oop от 0 до 100.000

Может кто-нибудь мне помочь?

Ответы [ 3 ]

0 голосов
/ 08 апреля 2020

Глядя на ваши журналы, разница между запуском и сбоем составляет 60 секунд, что может означать, что ваше приложение достигает 60-секундного таймаута загрузки Dyno во время выполнения Heroku (https://devcenter.heroku.com/articles/error-codes#r10 -boot-timeout ). Если это происходит, вы также должны увидеть ошибки R10 в потоке журнала. Существует множество причин, по которым Dynos может не загружаться, но, скорее всего, обычно ваш сервер неправильно привязывает переменную окружения $PORT, что означает, что маршрутизаторы Heroku не могут определить, работает ваше приложение или нет.

0 голосов
/ 08 апреля 2020

Я обнаружил проблему. Содержимое моего Procfile было web: node example/path, поэтому я просто изменил его на worker: node example/path, удалил приложение моего Heroku, пересоздал его и попытался снова. Я также позаботился о том, чтобы на вкладке «Ресурсы» Heroku опция «web» была деактивирована, а опция «worker» активирована. Шаги этого Heroku плюс только одно изменение слова ( web на worker ) изменили все, и теперь все работает хорошо.

Спасибо за ваше время и ответы

0 голосов
/ 08 апреля 2020

Существует множество причин, по которым это может произойти. Наиболее распространенные из них:

1. You do not have a Procfile.
Solution for this: make a Procfile which just says `worker node core.js` or `worker node .`.
2. You do not have enabled node dyno from the Heroku site.
Solution for this: Head to Dynos and enable node.
3. You have not updated your package.json.
Solution for this: Head to console/terminal and then say `npm init` and fill whatever it asks you to fill, Make sure that dependencies are properly aligned.

Извините, если это не поможет вам.

...