Так что я относительно новичок в программировании JavaScript, хотя я уже некоторое время занимаюсь этим как хобби. Мое приложение (Discord Bot) работает полностью нормально, когда я запускаю его со своего локального хоста с MongoDB, подключенным через Atlas. Однако я хочу, чтобы он работал постоянно, поэтому я попытался загрузить свой код на github и разместить его на Heroku. Единственная проблема, с которой я столкнулся, заключается в том, что MongoDB не инициализируется при размещении на Heroku, и я не знаю почему.
Любая помощь в правильном направлении будет принята с благодарностью.
Мой код:
const connection = require("../../mongodb").initDb;
const getDb = require("../../mongodb").getDb;
module.exports = async client => {
connection(err => {
if (err) console.log(err);
let db = getDb();
db.createCollection("Users");
const collection = db.collection("Users");
// Rest of code
});
};
.. / .. / файл mongodb:
const mongo = require("mongodb").MongoClient;
const config = require("./config.json");
const assert = require("assert");
let _db;
module.exports = {
initDb: function initDb(callback) {
if (_db) {
console.warn("Trying to init DB again!");
return callback(null, _db);
}
mongo.connect(process.env.MONGOCLIENTURI, config.options, connected);
function connected(err, dataBase) {
if (err) {
return callback(err);
}
console.log("DB initialized & Connected");
_db = dataBase.db("Members");
return callback(null, _db);
}
},
getDb: function getDb() {
assert.ok(_db, "Db has not been initialized. Please call init first.");
return _db;
},
};
Сообщение об ошибке:
2020-07-11T22:07:10.646273+00:00 app[web.1]: Ready!
2020-07-11T22:07:13.149231+00:00 app[web.1]: Unhandled Rejection at: Promise {
2020-07-11T22:07:13.149249+00:00 app[web.1]: <rejected> AssertionError [ERR_ASSERTION]: Db has not been initialized. Please call init first.
2020-07-11T22:07:13.149249+00:00 app[web.1]: at getDb (/app/mongodb.js:24:10)
2020-07-11T22:07:13.149251+00:00 app[web.1]: at Object.run (/app/commands/all/fact.js:9:14)
2020-07-11T22:07:13.149251+00:00 app[web.1]: at module.exports (/app/events/guild/message.js:15:11)
2020-07-11T22:07:13.149252+00:00 app[web.1]: at Client.emit (events.js:315:20)
2020-07-11T22:07:13.149252+00:00 app[web.1]: at MessageCreateAction.handle (/app/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
2020-07-11T22:07:13.149253+00:00 app[web.1]: at Object.module.exports [as MESSAGE_CREATE] (/app/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)