I am trying to host a bot on heroku (written using node and discord js). The bot itself is working since I can run it locally with no issues but heroku doesn't seem to like it. I've been getting the same error every time I tried to deploy it. I've changed the Procfile file to a worker instead of web application, I have pushed everything + restarted but can't seem to get it to work. Any help?
2020-01-28T11:31:46.007810+00:00 heroku[worker.1]: State changed from crashed to starting
2020-01-28T11:31:48.995011+00:00 heroku[worker.1]: Starting process with command `node index.js`
2020-01-28T11:31:49.818228+00:00 heroku[worker.1]: State changed from starting to up
2020-01-28T11:31:52.030152+00:00 heroku[worker.1]: State changed from up to crashed
2020-01-28T11:31:52.006456+00:00 heroku[worker.1]: Process exited with status 0
2020-01-28T11:31:51.886594+00:00 app[worker.1]: (node:4) UnhandledPromiseRejectionWarning: Error: An invalid token was provided.
2020-01-28T11:31:51.886618+00:00 app[worker.1]: at /app/node_modules/discord.js/src/client/rest/RESTMethods.js:34:54
2020-01-28T11:31:51.886621+00:00 app[worker.1]: at new Promise (<anonymous>)
2020-01-28T11:31:51.886623+00:00 app[worker.1]: at RESTMethods.login (/app/node_modules/discord.js/src/client/rest/RESTMethods.js:33:12)
2020-01-28T11:31:51.886625+00:00 app[worker.1]: at Client.login (/app/node_modules/discord.js/src/client/Client.js:280:30)
2020-01-28T11:31:51.886627+00:00 app[worker.1]: at Object.<anonymous> (/app/index.js:45:8)
2020-01-28T11:31:51.886629+00:00 app[worker.1]: at Module._compile (internal/modules/cjs/loader.js:955:30)
2020-01-28T11:31:51.886631+00:00 app[worker.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
2020-01-28T11:31:51.886633+00:00 app[worker.1]: at Module.load (internal/modules/cjs/loader.js:811:32)
2020-01-28T11:31:51.886635+00:00 app[worker.1]: at Function.Module._load (internal/modules/cjs/loader.js:723:14)
2020-01-28T11:31:51.886637+00:00 app[worker.1]: at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
2020-01-28T11:31:51.887556+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(). (rejection id: 3)
2020-01-28T11:31:51.887666+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.
With just the error it is hard to know the exact problem, but I think that you might have given a wrong Token for the bot, check if you didn't ignore the file containing the token.
If you are using a .env file for your token, then you can define environment variables on the app on Heroku.
Related
This question already has answers here:
Why am I getting a ReferenceError: AbortController is not defined in Discord.js v13?
(3 answers)
Closed 1 year ago.
I deployed my discord bot to Heroku but It is giving an error of unhandled promise rejection
Here are the logs
2021-09-10T20:50:26.000000+00:00 app[api]: Build started by user codertanishq#gmail.com
2021-09-10T20:50:45.558185+00:00 app[api]: Deploy c608c194 by user codertanishq#gmail.com
2021-09-10T20:50:45.558185+00:00 app[api]: Release v11 created by user codertanishq#gmail.com
2021-09-10T20:50:46.000000+00:00 app[api]: Build succeeded
2021-09-10T20:50:46.978335+00:00 heroku[web.1]: State changed from crashed to starting
2021-09-10T20:50:48.877754+00:00 heroku[web.1]: Starting process with command `npm start`
2021-09-10T20:50:51.529490+00:00 app[web.1]:
2021-09-10T20:50:51.529505+00:00 app[web.1]: > start#1.0.0 start /app
2021-09-10T20:50:51.529506+00:00 app[web.1]: > node ./src/bot.js
2021-09-10T20:50:51.529506+00:00 app[web.1]:
2021-09-10T20:50:51.762757+00:00 app[web.1]: (node:22) UnhandledPromiseRejectionWarning: ReferenceError: AbortController is not defined
2021-09-10T20:50:51.762758+00:00 app[web.1]: at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:172:15)
2021-09-10T20:50:51.762758+00:00 app[web.1]: at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:176:19)
2021-09-10T20:50:51.762758+00:00 app[web.1]: at RequestHandler.push (/app/node_modules/discord.js/src/rest/RequestHandler.js:50:25)
2021-09-10T20:50:51.762759+00:00 app[web.1]: at async WebSocketManager.connect (/app/node_modules/discord.js/src/client/websocket/WebSocketManager.js:128:9)
2021-09-10T20:50:51.762759+00:00 app[web.1]: at async Client.login (/app/node_modules/discord.js/src/client/Client.js:245:7)
2021-09-10T20:50:51.762759+00:00 app[web.1]: (Use `node --trace-warnings ...` to show where the warning was created)
2021-09-10T20:50:51.763064+00:00 app[web.1]: (node:22) 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-09-10T20:50:51.763091+00:00 app[web.1]: (node:22) [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.
2021-09-10T20:50:51.847328+00:00 heroku[web.1]: Process exited with status 0
2021-09-10T20:50:51.902780+00:00 heroku[web.1]: State changed from starting to crashed
You would have to upgrade your node version. You may add the following to your package.json:
"engines": {
"node": "16.9.1",
}
And redeploy your project and it would work
Discord.js v13 needs AbortController to function, but it was only introduced in node versions 16 and above. You have two options to fix this error:
Upgrade your node version on heroku to 16 or above
Use a polyfill for your AbortController , AbortController-polyfill is a package to do that, you may utilise it like so:
const { AbortController } = require('abortcontroller-polyfill/dist/cjs-ponyfill');
global.AbortController = AbortController;
When I try to run a Docker container and connect to a local MongoDB database, it gives me this error:
UnhandledPromiseRejectionWarning: MongooseServerSelectionError: Authentication failed.
this is the connection url in the end: mongodb://pody-admin:Nt4VzWPtDhkCxESjXVJx#localhost:27017/podify
I am trying to get an Auth system that someone else made to work on my end(cloned the repo).
I really don't have experience with working on team projects and using other people's code, let alone Docker.
I'm not really expecting a solution, but would like to know where to look to even understand what might be wrong.
This is what I get in the cmd:
$ npm run up
server#1.0.0 up D:\projects\SOS\podify\Server
docker-compose up -d
Starting server_db_1 ... done
Starting server_cache_1 ... done
server#1.0.0 postup D:\projects\SOS\podify\Server
npm run dev
server#1.0.0 dev D:\projects\SOS\podify\Server
npm run dev --prefix api
api#1.0.0 dev D:\projects\SOS\podify\Server\api
nodemon --exec ts-node src/index.ts
[nodemon] 2.0.4
[nodemon] to restart at any time, enter rs
[nodemon] watching path(s): .
[nodemon] watching extensions: ts,json
[nodemon] starting ts-node src/index.ts
Connection url => mongodb://pody-admin:Nt4VzWPtDhkCxESjXVJx#localhost:27017/podify
(node:5072) UnhandledPromiseRejectionWarning: MongooseServerSelectionError: Authentication failed.
at NativeConnection.Connection.openUri (D:\projects\SOS\podify\Server\api\node_modules\mongoose\lib\connection.js:828:32)
at Mongoose.connect (D:\projects\SOS\podify\Server\api\node_modules\mongoose\lib\index.js:335:15)
at D:\projects\SOS\podify\Server\api\src\index.ts:10:20
at Object. (D:\projects\SOS\podify\Server\api\src\index.ts:21:3)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Module.m._compile (D:\projects\SOS\podify\Server\api\node_modules\ts-node\src\index.ts:858:23)
at Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Object.require.extensions. [as .ts] (D:\projects\SOS\podify\Server\api\node_modules\ts-node\src\index.ts:861:12)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at main (D:\projects\SOS\podify\Server\api\node_modules\ts-node\src\bin.ts:227:14)
at Object. (D:\projects\SOS\podify\Server\api\node_modules\ts-node\src\bin.ts:513:3)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
(node:5072) 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: 1)
(node:5072) [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.
[nodemon] clean exit - waiting for changes before restart
When I have done everything correctly and have scripted correctly the comes up when i put node . in command prompt I even have a valid token!! ::
(node:8744) UnhandledPromiseRejectionWarning: Error [TOKEN_INVALID]: An invalid token was provided. at Client.login (C:\Users\User\Documents\GitHub TigerDuo\TigerDuo\node_modules\discord.js\src\client\Client.js:204:52) at Object.<anonymous> (C:\Users\User\Documents\GitHub TigerDuo\TigerDuo\index.js:47:5) at Module._compile (internal/modules/cjs/loader.js:1133:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10) at Module.load (internal/modules/cjs/loader.js:977:32) at Function.Module._load (internal/modules/cjs/loader.js:877:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) at internal/main/run_main_module.js:18:47 (node:8744) 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: 1) (node:8744) [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.
and this is my script let alone i have setup heroku and github:
const Discord = require('discord.js');
const bot = new Discord.Client();
const token = 'MyNeverToBeSharedToken';
bot.on('ready', () => {
console.log('Online.')
bot.user.setActivity('the Tiger Duo server!', {
type: "WATCHING"
})
bot.login(process.env.token);
Try installing dotenv package
require("dotenv").config()
And add this to the top of your code
I've done all the steps required in heroku to setup a discord bot but i need dependency "discord.js fs". How could i accomplish this?
2019-11-27T15:54:52.648918+00:00 app[Worker.1]: [ws] [connection] Clearing heartbeat interval
2019-11-27T15:54:52.649526+00:00 app[Worker.1]: [ws] [connection] Attempted to destroy WebSocket but no connection exists!
2019-11-27T15:54:52.652133+00:00 app[Worker.1]: (node:4) UnhandledPromiseRejectionWarning: Error: Incorrect login details were provided.
2019-11-27T15:54:52.652137+00:00 app[Worker.1]: at WebSocketConnection.<anonymous> (/app/node_modules/discord.js/src/client/ClientManager.js:48:41)
2019-11-27T15:54:52.652139+00:00 app[Worker.1]: at Object.onceWrapper (events.js:300:26)
2019-11-27T15:54:52.652141+00:00 app[Worker.1]: at WebSocketConnection.emit (events.js:210:5)
2019-11-27T15:54:52.652143+00:00 app[Worker.1]: at WebSocketConnection.onClose (/app/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:390:10)
2019-11-27T15:54:52.652145+00:00 app[Worker.1]: at WebSocket.onClose (/app/node_modules/ws/lib/event-target.js:124:16)
2019-11-27T15:54:52.652147+00:00 app[Worker.1]: at WebSocket.emit (events.js:210:5)
2019-11-27T15:54:52.652149+00:00 app[Worker.1]: at WebSocket.emitClose (/app/node_modules/ws/lib/websocket.js:191:10)
2019-11-27T15:54:52.652152+00:00 app[Worker.1]: at TLSSocket.socketOnClose (/app/node_modules/ws/lib/websocket.js:850:15)
2019-11-27T15:54:52.652154+00:00 app[Worker.1]: at TLSSocket.emit (events.js:215:7)
2019-11-27T15:54:52.652156+00:00 app[Worker.1]: at net.js:659:12
2019-11-27T15:54:52.652282+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(). (rejection id: 2)
2019-11-27T15:54:52.652407+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.
2019-11-27T15:54:52.721072+00:00 heroku[Worker.1]: Process exited with status 0```
on deploying meanapp , mongodb is working fine on local node server.js but when i deploy to heroku it showing error
2019-06-04T02:49:12.401001+00:00 heroku[web.1]: State changed from up
to starting
2019-06-04T02:49:13.706279+00:00 heroku[web.1]: Stopping all processes
with SIGTERM
2019-06-04T02:49:13.800926+00:00 heroku[web.1]: Process exited with
status 143
2019-06-04T02:49:17.993509+00:00 heroku[web.1]: Starting process with
command node server.js
2019-06-04T02:49:20.786431+00:00 app[web.1]:
mongodb+srv://username:password#cluster0-dlcak.mongodb.net
/test?retryWrites=true 2019-06-04T02:49:20.803912+00:00 app[web.1]:
app listening at 40970
2019-06-04T02:49:20.972565+00:00 app[web.1]: database error
MongoNetworkError: connection 4 to
cluster0-shard-00-01-dlcak.mongodb.net:27017 closed
2019-06-04T02:49:20.973723+00:00 app[web.1]: (node:4)
UnhandledPromiseRejectionWarning: TypeError: callback is not a
function
2019-06-04T02:49:20.973725+00:00 app[web.1]: at
$initialConnection.$initialConnection.then
(/app/node_modules/mongoose/lib/connection.js:638:13)
2019-06-04T02:49:20.973810+00:00 app[web.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(). (rejection id: 1)
2019-06-04T02:49:20.973880+00:00 app[web.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.
2019-06-04T02:49:21.758205+00:00 heroku[web.1]: State changed from
starting to up
I got the solution while searching,
go to mongodb atlas
click security -> Network Access -> ADD IP ADDRESS -> Choose allow access from anywhere and save
click connect and get your application to your code and paste to your application.
How is it configured on Heroku?
Use
https://elements.heroku.com/addons/mongolab -- for reference
Add
const mongo_url = process.env.MONGO_URI || "YOUR_URL_HERE";
to your code