Discord.js与quick.db数据未找到报错求助
排查 Discord.js + quick.db "data not found" 错误
可能的原因及对应解决方法
1. quick.db 初始化时机错误
你的代码在模块内部才引入quick.db,可能导致初始化不完整。建议将其移至文件顶部与其他依赖一同引入:
const Discord = require('discord.js'); const moment = require('moment'); const { prefix } = require('../config.json'); const db = require('quick.db'); // 移至顶部统一初始化 module.exports = async(message,guild,args,member) => { // 后续业务代码 }
2. fetch 方法兼容性问题
新版 quick.db 已弃用fetch方法,改用get获取数据,替换后可解决部分版本兼容报错:
const d2 = db.get(`dil_${message.guild.id}`);
3. 未处理异常语言值分支
若数据库中存储的语言值既不是tr也不是en,会导致lang变量未定义,补充默认分支避免后续报错:
const d2 = db.get(`dil_${message.guild.id}`); let lang; // 无数据或值不在预期范围内时,默认加载土耳其语配置 if(!d2 || !['tr','en'].includes(d2)) { lang = require('../lang/tr.json'); } else if(d2 === "en") { lang = require('../lang/en.json'); } else { lang = require('../lang/tr.json'); }
4. 数据库文件或路径异常
- 确认 quick.db 生成的
json.sqlite文件所在目录具备读写权限 - 检查
../lang/路径下确实存在tr.json和en.json文件,路径层级与项目结构匹配
5. Guild ID 无效
确保代码仅在服务器频道执行,避免私信场景下message.guild为空导致的无效键值:
if(!message.guild) return; // 过滤私信频道 const d2 = db.get(`dil_${message.guild.id}`);
内容的提问来源于stack exchange,提问作者DnzCgn
相关产品推荐
相关产品推荐

