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

Express与connect-mongo报错:MongoStore构造函数需用new调用求解决

问题定位与解决方案

错误原因

你遇到的TypeError: Class constructor MongoStore cannot be invoked without 'new'错误,核心是connect-mongo版本与代码写法不兼容:

  • 你的代码采用了旧版connect-mongo(v3及以下)的调用方式:require('connect-mongo')(session)
  • 但实际安装的是v4及以上版本,该版本的库导出逻辑已变更:不再需要传入session参数,直接导出的就是MongoStore类,且实例化方式也有调整。

解决方案

提供两种可选方案:

方案1:适配connect-mongo新版本(推荐)

修改代码中MongoStore的引入和配置:

  1. 替换引入语句
// 旧代码
const MongoStore = require('connect-mongo')(session)

// 新代码
const MongoStore = require('connect-mongo')
  1. 更新session配置中的store项
const sessionOptions = session({
    secret: 'hdfkajdkk58fj',
    // 替换这一行
    store: MongoStore.create({ mongoUrl: process.env.CONNECTIONSTRING }),
    resave: false,
    saveUninitialized: false,
    cookie: {
        maxAge: 1000 * 60 * 60 * 24 * 7,
        httpOnly: true
    }
})

如果想复用已有的mongoose连接,也可以这样写:

store: MongoStore.create({ clientPromise: mongoose.connection.asPromise() })

方案2:回退到旧版connect-mongo

如果你想保持现有代码结构不变,可卸载当前版本,安装v3.x版本:

npm uninstall connect-mongo
npm install connect-mongo@3

额外提示

代码中还有一处未引入依赖的问题:app.use(flash())需要先引入connect-flash包,否则会报错,需添加:

const flash = require('connect-flash')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:16:10