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

如何修复Mongoose中的TypeError: Cannot read properties of undefined (reading 'split')?

修复Mongoose连接MongoDB时的TypeError: Cannot read properties of undefined (reading 'split')错误

问题描述

你在使用Mongoose 6.5.3连接MongoDB时遇到了TypeError: Cannot read properties of undefined (reading 'split')错误,相关代码如下:

export const dbConnect = async () => {
  mongoose.connect(process.env.NEXT_PUBLIC_MONGO_URI);
  const db = mongoose.connection;
  db.on('error', function () {
    console.log('db connection failed!');
  });
  db.once('open', function () {
    console.log('db connected!');
  });
};

使用环境:Mongoose 6.5.3,Next.js 12.2.5

解决方案

核心原因

process.env.NEXT_PUBLIC_MONGO_URI的值为undefined,Mongoose在处理空连接字符串时会调用split方法,触发该错误。

具体修复步骤

  • 检查环境变量配置
    确认项目根目录下的.env.local文件中已正确配置连接字符串,格式示例:

    MONGO_URI="mongodb+srv://<用户名>:<密码>@集群地址/<数据库名>?retryWrites=true&w=majority"
    

    注意:数据库连接字符串属于敏感信息,不要使用NEXT_PUBLIC_前缀,该前缀会将变量暴露给客户端,改用普通前缀(如MONGO_URI)即可。

  • 添加变量存在性校验
    在连接数据库前先判断变量是否存在,避免传入undefined:

    export const dbConnect = async () => {
      if (!process.env.MONGO_URI) {
        throw new Error('请配置MONGO_URI环境变量');
      }
      await mongoose.connect(process.env.MONGO_URI);
      const db = mongoose.connection;
      db.on('error', function () {
        console.log('db connection failed!');
      });
      db.once('open', function () {
        console.log('db connected!');
      });
    };
    
  • 重启开发服务器
    修改.env.local文件后,必须重启Next.js开发服务器,新的环境变量才能生效。

额外建议

  • Mongoose 6.x版本默认支持Promise,使用await处理连接操作可以避免异步操作的潜在问题。
  • 敏感信息(如数据库密码)始终通过环境变量管理,禁止硬编码到代码中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:30:52