Automattic/mongoose · error · MongooseError
Mongoose.prototype.connect() no longer accepts a callback
Error message
Mongoose.prototype.connect() no longer accepts a callback
What it means
Error "Mongoose.prototype.connect() no longer accepts a callback" thrown in Automattic/mongoose.
Source
Thrown at lib/mongoose.js:466
* @param {string} [options.dbName] The name of the database we want to use. If not provided, use database name from connection string.
* @param {string} [options.user] username for authentication, equivalent to `options.auth.username`. Maintained for backwards compatibility.
* @param {string} [options.pass] password for authentication, equivalent to `options.auth.password`. Maintained for backwards compatibility.
* @param {number} [options.maxPoolSize=100] The maximum number of sockets the MongoDB driver will keep open for this connection. Keep in mind that MongoDB only allows one operation per socket at a time, so you may want to increase this if you find you have a few slow queries that are blocking faster queries from proceeding. See [Slow Trains in MongoDB and Node.js](https://thecodebarbarian.com/slow-trains-in-mongodb-and-nodejs).
* @param {number} [options.minPoolSize=0] The minimum number of sockets the MongoDB driver will keep open for this connection.
* @param {number} [options.serverSelectionTimeoutMS] If `useUnifiedTopology = true`, the MongoDB driver will try to find a server to send any given operation to, and keep retrying for `serverSelectionTimeoutMS` milliseconds before erroring out. If not set, the MongoDB driver defaults to using `30000` (30 seconds).
* @param {number} [options.heartbeatFrequencyMS] If `useUnifiedTopology = true`, the MongoDB driver sends a heartbeat every `heartbeatFrequencyMS` to check on the status of the connection. A heartbeat is subject to `serverSelectionTimeoutMS`, so the MongoDB driver will retry failed heartbeats for up to 30 seconds by default. Mongoose only emits a `'disconnected'` event after a heartbeat has failed, so you may want to decrease this setting to reduce the time between when your server goes down and when Mongoose emits `'disconnected'`. We recommend you do **not** set this setting below 1000, too many heartbeats can lead to performance degradation.
* @param {boolean} [options.autoIndex=true] Mongoose-specific option. Set to false to disable automatic index creation for all models associated with this connection.
* @param {number} [options.socketTimeoutMS=0] How long the MongoDB driver will wait before killing a socket due to inactivity _after initial connection_. A socket may be inactive because of either no activity or a long-running operation. `socketTimeoutMS` defaults to 0, which means Node.js will not time out the socket due to inactivity. This option is passed to [Node.js `socket#setTimeout()` function](https://nodejs.org/api/net.html#net_socket_settimeout_timeout_callback) after the MongoDB driver successfully completes.
* @param {number} [options.family=0] Passed transparently to [Node.js' `dns.lookup()`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) function. May be either `0`, `4`, or `6`. `4` means use IPv4 only, `6` means use IPv6 only, `0` means try both.
* @param {boolean} [options.autoCreate=false] Set to `true` to make Mongoose automatically call `createCollection()` on every model created on this connection.
* @see Mongoose#createConnection https://mongoosejs.com/docs/api/mongoose.html#Mongoose.prototype.createConnection()
* @api public
* @return {Promise} resolves to `this` if connection succeeded
*/
Mongoose.prototype.connect = async function connect(uri, options) {
if (typeof options === 'function' || (arguments.length >= 3 && typeof arguments[2] === 'function')) {
throw new MongooseError('Mongoose.prototype.connect() no longer accepts a callback');
}
const _mongoose = this instanceof Mongoose ? this : mongoose;
if (_mongoose.connection == null) {
_createDefaultConnection(_mongoose);
}
const conn = _mongoose.connection;
return conn.openUri(uri, options).then(() => _mongoose);
};
/**
* Runs `.close()` on all connections in parallel.
*
* @return {Promise} resolves when all connections are closed, or rejects with the first error that occurred.
* @api public
*/
View on GitHub (pinned to 49cdab0136)
When it happens
Trigger: Thrown at lib/mongoose.js:466 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Automattic/mongoose@49cdab0136 (2026-08-21).
Data as JSON: /api/errors/a9c871d0802f49f3.
Report an issue: GitHub.