现象
运行pnpm dev启动FastGPT源码后,访问http://localhost:3000/ 出现MongoDB连接错误,报错文本为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.。用户确认MongoDB可通过内网正常连接,启动过程中会打印mongo start connect日志,随后触发该报错。
可能原因
该报错来自代码调用栈中的connectMongo函数(位于../../packages/service/common/mongo/init.ts),核心问题是调用mongoose.connect()时传入的连接地址参数为undefined,通常是因为环境变量中未配置或未正确读取MongoDB连接地址。
排查步骤
- 检查项目的环境变量配置文件,确认存在MongoDB连接地址的配置项,确认配置项名称与代码读取逻辑匹配(需按实际环境确认具体配置项名称)。
- 确认启动项目前已正确加载环境变量,检查启动命令是否包含环境变量加载步骤,确保在配置完成的环境中执行启动命令。
- 对照日志顺序,确认在打印
mongo start connect后立即出现该报错,说明连接逻辑已触发但未获取到有效连接地址。 - 查看
packages/service/common/mongo/init.ts文件中的connectMongo函数,核对环境变量读取逻辑,确认是否正确获取到配置值。
解决与验证
解决方法:补全并修正环境变量中的MongoDB连接地址配置,确保mongoose.connect()接收的参数为有效字符串格式的连接地址。 验证步骤:
- 将正确的MongoDB连接地址配置到环境变量中。
- 执行
pnpm dev重新启动项目。 - 访问
http://localhost:3000/,确认不再出现该MongoDB连接报错,且服务正常加载模型(如日志中出现Load model====== chatitems等正常加载日志)。