MongoDB Discord.js,uri 未定义

Posted

技术标签:

【中文标题】MongoDB Discord.js,uri 未定义【英文标题】:MongoDB Discord.js, uri is undefined 【发布时间】:2021-07-10 12:55:05 【问题描述】:

出现错误时,我正在将 Mongo DB 连接到我的机器人。这是我在 main.js 中的编码:

const Discord = require('discord.js');
const client = new Discord.Client( partials: ["MESSAGE", "CHANNEL", "REACTION"]);
require("dotenv").config();
const fs = require('fs');
const prefix = process.env.PREFIX;
client.prefix = process.env.PREFIX;
const mongoose = require('mongoose');

client.commands = new Discord.Collection();
client.events = new Discord.Collection();



fs.readdirSync('./events/').filter(file => file.endsWith('.js')).forEach(events => 
    require(`./events/$events`)(client, prefix);
);


['command_handler'].forEach(handler =>
    require(`./handlers/$handler`)(client, Discord);
);

mongoose.connect(process.env.MONGODBSRV, 
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useFindAndModify: false
).then(() =>
    console.log('Connected to the database!');
).catch((err) => 
    console.log(err);
);


client.login(process.env.DISCORD_TOKEN);

我不知道出了什么问题,因为我对 Mongo 真的很陌生,所以如果您提供一些建议,我会很高兴的。我一直在关注如何连接它的教程(如果你想看的话,由 Codelyon 提供)。这是我的错误:

MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.
    at NativeConnection.Connection.openUri (C:\Users\shann\Desktop\DiscordBot\node_modules\mongoose\lib\connection.js:694:11)
    at C:\Users\shann\Desktop\DiscordBot\node_modules\mongoose\lib\index.js:348:10     
    at C:\Users\shann\Desktop\DiscordBot\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:5
    at new Promise (<anonymous>)
    at promiseOrCallback (C:\Users\shann\Desktop\DiscordBot\node_modules\mongoose\lib\helpers\promiseOrCallback.js:30:10)
    at Mongoose._promiseOrCallback (C:\Users\shann\Desktop\DiscordBot\node_modules\mongoose\lib\index.js:1152:10)
    at Mongoose.connect (C:\Users\shann\Desktop\DiscordBot\node_modules\mongoose\lib\index.js:347:20)dex.js:347:20)
    at Object.<anonymous> (C:\Users\shann\Desktop\DiscordBot\main.js:24:10)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)                       at internal/main/run_main_module.js:17:47
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)    at internal/main/run_main_module.js:17:47

注意:它实际上并没有使我的机器人崩溃。我的其余代码运行良好。

【问题讨论】:

process.env.MONGODBSRV 标记“作为字符串”吗? 我不明白你的意思。在我的环境中,它看起来像 MONGODBSRV = &lt;My connection&gt; 你能试试把require("dotenv").config()放在最上面吗? 已经有了。 (如果你的意思是在 main.js 中) 尝试在调用mongoose.connect之前添加console.log(process.env.MONGODBSRV) 【参考方案1】:

在您的代码中,问题是process.env.MONGODBSRV

我认为,您没有在 .env 文件中定义 MONGODBSRV 的值。看看吧!

【讨论】:

以上是关于MongoDB Discord.js,uri 未定义的主要内容,如果未能解决你的问题,请参考以下文章

MessageCreate.js 数据库前缀问题 - Discord.js v13/MongoDB

Discord.js/Mongodb 如何更新所有数据库值

discord.js 中的 MongoDB 缓存

不和谐机器人 |使用 discord.js 和 MongoDB 进行排名(排行榜?)系统

如何使用数据库(MongoDB)和 Discord.js 制作“setWelcome”命令?

如果有人 ping 一个处于 AFK 状态的成员,它会发送一条消息 | Discord.js / mongodb