Mongoose报错openUri的uri参数为undefined,已确认mongoURI是字符串如何解决
问题原因
- 核心问题为变量名大小写不匹配:JavaScript对象的键名区分大小写,你在
config/keys.js中导出的配置项键名为小驼峰格式的mongoURI,但在data/mongodb.js调用mongoose.connect时错误使用了全大写的keys.MONGO_URI,因此获取到的值为undefined,直接触发参数类型报错。 - 你打印的
typeof(keys.mongoURI)返回字符串类型,也可以佐证mongoURI本身是正常导出的,问题仅出在调用时的键名错误。 - 潜在问题:
config/keys.js的连接串中<password>为占位符,若未替换为MongoDB Atlas对应账号的真实密码,后续会触发认证报错。
解决方法
- 修正调用时的键名:将
data/mongodb.js中mongoose.connect的第一个参数修改为keys.mongoURI,修改后的代码如下:
const conn = await mongoose.connect(keys.mongoURI, { useUnifiedTopology: true, useNewUrlParser: true })
- 替换数据库密码占位符:将
config/keys.js连接串中的<password>替换为MERN_dev用户对应的真实数据库密码,注意删除尖括号。 - 确认导出语法合法:
config/keys.js中的other parameters为示例内容,实际需遵循JS对象语法编写配置项,保证导出格式正确。
内容的提问来源于stack exchange,提问作者user17348611
相关产品推荐
相关产品推荐

