Express.js项目中TypeError: mongodb.connect is not a function错误排查求助
解决
TypeError: mongodb.connect is not a function 错误 这个错误的核心原因是MongoDB Node.js驱动版本的API变更——从v3.x版本开始,connect方法不再直接暴露在顶层的mongodb模块中,而是需要通过MongoClient类来调用。
修复步骤:
- 第一步:调整导入语句,从
mongodb模块中解构出MongoClient:const { MongoClient } = require("mongodb"); const dotenv = require("dotenv").config(); - 第二步:替换调用方式,把
mongodb.connect改成MongoClient.connect:MongoClient.connect( process.env.CONNECTION, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) { if (err) { console.log(err); } else { module.exports = client; const app = require("./app"); app.listen(process.env.PORT, function () { console.log("connected"); }); } } );
进阶优化(推荐):
如果你的MongoDB驱动是v4+版本,更建议使用async/await的异步写法,代码可读性更强,也更符合现代JS的编程习惯:
const { MongoClient } = require("mongodb"); const dotenv = require("dotenv").config(); async function initDBAndServer() { try { // 建立数据库连接 const client = await MongoClient.connect(process.env.CONNECTION, { useNewUrlParser: true, useUnifiedTopology: true }); module.exports = client; // 启动Express服务 const app = require("./app"); app.listen(process.env.PORT, () => { console.log("Database connected and server running!"); }); } catch (err) { console.error("Failed to initialize:", err); } } initDBAndServer();
额外检查:
你可以查看项目根目录下的package.json文件,确认mongodb的版本号。如果是v2.x版本,原来的写法是有效的,但出于安全性和功能完整性考虑,建议升级到最新的稳定版本。
内容的提问来源于stack exchange,提问作者ismail taibi
相关产品推荐
相关产品推荐

