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

使用Mongoose连接MongoDB报错:connect()不再接受回调函数求助

解决Mongoose.prototype.connect() no longer accepts a callback错误

你的错误和nodemon无关——nodemon只是用来监听文件变化自动重启服务的工具,真正问题出在新版Mongoose(6.x及以上)已经移除了connect()方法接受回调函数的支持,必须用Promise或async/await处理异步连接逻辑。

修改后的代码示例

方式1:使用Promise.then/catch

修改database.js:

const mongoose = require('mongoose')
const mongoURI = 'mongodb://localhost:27017/'

const connectToMongo = () => {
  mongoose.connect(mongoURI)
    .then(() => console.log('connected to mongo'))
    .catch(err => console.error('连接Mongo失败:', err))
}

module.exports = connectToMongo;

方式2:使用async/await(更推荐,代码更清晰)

修改database.js:

const mongoose = require('mongoose')
const mongoURI = 'mongodb://localhost:27017/'

const connectToMongo = async () => {
  try {
    await mongoose.connect(mongoURI);
    console.log('connected to mongo');
  } catch (err) {
    console.error('连接Mongo失败:', err);
  }
}

module.exports = connectToMongo;

可选:优化index.js的调用(非必须,但更严谨)

如果用async/await写法,可以把index.js改成异步执行:

const connectToMongo = require('./database');

(async () => {
  await connectToMongo();
})();

(不修改也能正常运行,async函数会自动返回Promise并执行)

补充说明

  • Mongoose从6.x版本开始彻底移除了回调式的API支持,所有异步操作都必须用Promise或async/await处理
  • 你执行的npx nodemon .\index.js命令是完全正确的,不需要调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:13:18