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
相关产品推荐
相关产品推荐

