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

Node.js连接MongoDB报错:TypeError: Cannot read properties of undefined (reading 'startsWith')

解决MongoDB连接时的TypeError: Cannot read properties of undefined (reading 'startsWith')

错误原因

你使用的代码是针对MongoDB Node.js驱动v2.x版本编写的,但当前安装的是v3及以上版本的驱动,API发生了不兼容变更。原代码中new MongoClient()无参数实例化的方式,在新版驱动里会导致后续connect调用时无法正确识别连接字符串,从而抛出该错误。

解决方案

方案1:升级代码适配新版驱动(推荐)

新版驱动要求在实例化MongoClient时直接传入连接字符串和配置选项,以下是修正后的代码(提供两种风格):

回调风格(贴近原代码写法)

const { MongoClient } = require('mongodb');

// 连接字符串
const uri = 'mongodb://dbadmin:test@localhost:27017/testDB';
// 配置选项,新增参数避免新版驱动警告
const clientOptions = {
  poolSize: 5,
  reconnectInterval: 500,
  useNewUrlParser: true,
  useUnifiedTopology: true
};

// 实例化时传入uri和配置
const client = new MongoClient(uri, clientOptions);

client.connect(function(err, db) {
  if (err) {
    console.log("connection failed via client obj.", err);
    client.close();
    return;
  }
  console.log("connected via client obj...");
  db.logout(function(err, result) {
    if (!err) {
      console.log("logged out via client obj...");
    }
    client.close();
    console.log("connection closed...");
  });
});

Promise风格(新版驱动推荐写法)

const { MongoClient } = require('mongodb');

const uri = 'mongodb://dbadmin:test@localhost:27017/testDB';
const clientOptions = {
  poolSize: 5,
  reconnectInterval: 500,
  useNewUrlParser: true,
  useUnifiedTopology: true
};

const client = new MongoClient(uri, clientOptions);

client.connect()
  .then(db => {
    console.log("connected via client obj...");
    return db.logout();
  })
  .then(() => {
    console.log("logged out via client obj...");
    client.close();
    console.log("connection closed...");
  })
  .catch(err => {
    console.error("connection failed via client obj.", err);
    client.close();
  });

方案2:安装旧版驱动兼容原代码

如果不想修改代码,可以安装v2.x版本的MongoDB驱动:

npm install mongodb@2.x --save

安装完成后原代码可正常运行,但不推荐此方式——旧版驱动已停止维护,存在安全与功能缺陷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:25:02