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

