You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mongoose连接MongoDB报reading 'host' of undefined错误

问题描述

连接MongoDB数据库时持续抛出TypeError: Cannot read properties of undefined (reading 'host')错误,错误定位到db.js文件第11行,项目相关代码如下:

Index.js 代码

const express = require("express");
const dotenv = require("dotenv");
const connectDB = require("./config/db");

//Load config
dotenv.config({ path: "./config/config.env" });
console.log("hello");
connectDB();

const app = express();

const PORT = process.env.PORT || 3000;

app.listen(
  PORT,
  console.log(`server running in ${process.env.NODE_ENV} mode on port ${PORT}`)
);

db.js 代码(报错行位于第11行)

const mongoose = require("mongoose");

const connectDB = async () => {
  try {
    const conn = mongoose.connect(process.env.MONGO_URI, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
      //   useFindAndModify: false,
    });
    console.log("hey!");
    console.log(`MongoDB connecteed: ${conn.connection.host}`);
  } catch (err) {
    console.error(err);
    process.exit(1);
  }
};

module.exports = connectDB;
问题根因
  • 核心代码疏漏:mongoose.connect()是异步方法,返回Promise对象,现有代码调用时未加await关键字等待连接完成,变量conn拿到的是未resolve的Promise实例,不存在connection属性,访问conn.connection.host时会读取undefined值的host属性,直接触发类型错误。
  • 潜在配置问题:需确认./config/config.env文件中存在格式正确的MONGO_URI配置项,若dotenv未正确加载该环境变量,即使修复代码逻辑也会因无效连接地址抛出连接失败错误。
修复方案

修改db.js中mongoose.connect的调用逻辑,补充await关键字,修正后的db.js代码如下:

const mongoose = require("mongoose");

const connectDB = async () => {
  try {
    const conn = await mongoose.connect(process.env.MONGO_URI, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
      //   useFindAndModify: false,
    });
    console.log("hey!");
    console.log(`MongoDB connected: ${conn.connection.host}`);
  } catch (err) {
    console.error(err);
    process.exit(1);
  }
};

module.exports = connectDB;

修复后可先在connectDB方法内打印process.env.MONGO_URI确认环境变量加载正常,再启动服务验证连接状态。

内容的提问来源于stack exchange,提问作者william

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 02:33:26