Discord бот не запускается с героку

avatar
Tom The Italian BBQ
8 августа 2021 в 20:34
1592
2
0

Итак, я разместил своего бота на героку в течение некоторого времени, и он работал нормально, но недавно я снова временно перешел на собственный хостинг, потому что мне пришлось обновиться до discord.js v13, но теперь я закончил с изменениями, и я попытался повторно разместить бота на героку, но он выдает эту ошибку:

(node:4) UnhandledPromiseRejectionWarning: ReferenceError: AbortController is not defined

2021-08-08T20:30:17.770796+00:00 app[Worker.1]:     at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:172:15)

2021-08-08T20:30:17.770796+00:00 app[Worker.1]:     at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:176:19)

2021-08-08T20:30:17.770797+00:00 app[Worker.1]:     at RequestHandler.push (/app/node_modules/discord.js/src/rest/RequestHandler.js:50:25)

2021-08-08T20:30:17.770797+00:00 app[Worker.1]:     at processTicksAndRejections (internal/process/task_queues.js:95:5)

2021-08-08T20:30:17.770798+00:00 app[Worker.1]:     at async WebSocketManager.connect (/app/node_modules/discord.js/src/client/websocket/WebSocketManager.js:128:9)

2021-08-08T20:30:17.770798+00:00 app[Worker.1]:     at async Client.login (/app/node_modules/discord.js/src/client/Client.js:245:7)

2021-08-08T20:30:17.770799+00:00 app[Worker.1]: (Use `node --trace-warnings ...` to show where the warning was created)

2021-08-08T20:30:17.770962+00:00 app[Worker.1]: (node:4) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)

2021-08-08T20:30:17.771045+00:00 app[Worker.1]: (node:4) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Я не понимаю, что происходит, единственное изменение, которое, как я думаю, может вызвать это, заключается в том, что я создал обработчик событий и теперь помещаю события в свои собственные файлы, такие как команды, но я не уверен, что это имеет какое-то отношение к этой ошибке, я очень надеюсь, что вы можете помочь.

Источник
Skulaurun Mrusal
8 августа 2021 в 20:39
4

Отвечает ли это на ваш вопрос? Почему я получаю сообщение об ошибке ReferenceError: AbortController не определен в Discord.js v13?

Tom The Italian BBQ
8 августа 2021 в 20:45
0

Этот вопрос - именно моя проблема, но он предлагает обновиться до узла 16.6, что я уже сделал, к сожалению, я не могу сейчас проверить, но я почти уверен, что у меня должна быть правильная версия узла.

Tyler2P
8 августа 2021 в 23:33
1

Вы можете проверить версию своего узла, запустив node -v в своем терминале.

Ответы (2)

avatar
electricSoda
9 августа 2021 в 01:30
4

Я тоже недавно столкнулся с этой ошибкой.

Discord.js version 13 runs on node 16.6.1, however, the default Heroku node version is 14.x.

Это означает, что мы должны указать версию, на которой мы хотим, чтобы Heroku создавал наше приложение.

В package.json добавить

"engines": {
   "node": "16.x",
   "npm": "7.x"
}

Ссылка: https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version

Это указывает сборочному пакету, что нам нужно использовать последнюю версию узла 16 и npm 7.

Однако после того, как я добавил это, я столкнулся с ошибкой развертывания и сослался на этот вопрос о переполнении стека

В ответе было сказано добавить пустой файл ".npmignore" в корневую папку, что я и сделал. Однако после отправки всего на Github я по-прежнему получал ту же ошибку развертывания.

Сообщалось, что файл "node.exe" во временном каталоге отсутствует. После некоторых проб и ошибок я решил зафиксировать и отправить каталог «node_modules/» на Github (это заняло некоторое время), потому что (извините, я не скопировал журналы сборки) файл «node.exe» находился в "node_modules/", а затем повторно развернул мое приложение, и все заработало!

В целом, это был своего рода круговой обход, потому что я не знаю, делает ли что-нибудь файл ".npmignore" (пожалуйста, прокомментируйте, если я ошибаюсь!).

Подводя итог тому, что я сделал, чтобы исправить свое приложение:

  1. Добавить спецификаторы движка в package.json
  2. Добавить .npmignore в корневой каталог (на ваше усмотрение, хотите ли вы его добавить)
  3. Зафиксируйте и отправьте папку модулей узла на страницу Github.
  4. Развертывание через Github

К вашему сведению: я не знаю, работает ли это на Heroku Git... сообщите мне в комментариях, работает ли это.

Tom The Italian BBQ
9 августа 2021 в 09:17
0

Большое спасибо, все заработало! Мне просто нужно было добавить спецификаторы двигателя, спасибо!

avatar
valenyala
26 августа 2021 в 21:44
0

Я попытался добавить свойство "engine" только с версией узла (без версии npm) в package.json, и это сработало для меня. Таким образом, вам не нужно отправлять большие модули узлов на GitHub.