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

connect-mongo报MongoStore调用TypeError的原因与解决方法

错误原因

报错TypeError: Class constructor MongoStore cannot be invoked without 'new'是版本适配问题:你当前安装的是v4及以上版本的connect-mongo,该版本重构了API,不再支持v3及更早版本中require("connect-mongo")(session)的链式导入写法,新版本导出的是ES6类,无法直接作为函数调用。

解决方法

两种方案二选一即可,推荐优先使用新版API适配方案,旧版本已停止维护。

  • 方案1:适配新版connect-mongo API
    1. 修改导入语句,删除旧的链式传参写法,替换为:
    const MongoStore = require('connect-mongo');
    
    1. 修改会话存储实例的创建逻辑,新版使用官方提供的create静态方法创建实例,数据库地址字段改为mongoUrl,移除原本写在store配置中冗余的secret字段(该字段只需在session配置中声明一次):
    const store = MongoStore.create({
        mongoUrl: dbUrl,
        touchAfter: 24 * 60 * 60
    })
    
    适配完成后的完整代码如下:

const session = require('express-session');
const MongoStore = require('connect-mongo');
const mongoose = require('mongoose');

mongoose.connect(dbUrl, {
useNewUrlParser: true,
useUnifiedTopology: true
});
const store = MongoStore.create({
mongoUrl: dbUrl,
touchAfter: 24 * 60 * 60
})
const sessionConfig = {
store,
name: 'session',
secret: 'thisshouldbeabettersecret!',
resave: false,
saveUninitialized: true,
cookie: {
httpOnly: true,
// secure: true,
expires: Date.now() + 1000 * 60 * 60 * 24 * 7,
maxAge: 1000 * 60 * 60 * 24 * 7
}
}

app.use(session(sessionConfig));

- 方案2:降级connect-mongo到兼容旧写法的版本
如果不想修改现有代码,直接在项目目录执行以下命令安装v3最终版本即可:
```bash
npm install connect-mongo@3.2.0

内容的提问来源于stack exchange,提问作者Aarush 01

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:57:21