使用connect-mongo@6.0.0连接MongoDB Atlas遇构造函数错误求助
解决"MongoStore is not a constructor/function"错误(connect-mongo@6.0.0)
- 问题根源:connect-mongo@6.x版本采用ES模块规范导出,在CommonJS环境下直接
require会拿到整个模块对象,而非MongoStore类本身,导致调用create方法时出错。 - 修复方案:修改导入语句,通过
.default获取模块的默认导出:
const session = require("express-session"); // 关键修改:添加.default获取MongoStore类 const MongoStore = require('connect-mongo').default; const store = MongoStore.create({ mongoUrl: dbUrl, crypto: { secret: "mysupersecretcode", }, touchAfter: 24 * 3600, }); store.on("error", (err) => { console.log("ERROR in MONGO SESSION STORE", err); }); const sessionOptions = { store, secret: "mysupersecretcode", resave: false, saveUninitialized: true, cookie: { expires: Date.now() + 7 * 24 * 60 * 60 * 1000, maxAge: 7 * 24 * 60 * 60 * 1000, httpOnly: true } };
- 替代方案:如果你的项目配置了ES模块(package.json中设置
"type": "module"),可以改用import语法:
import session from "express-session"; import MongoStore from "connect-mongo";
内容的提问来源于stack exchange,提问作者Akshath P
相关产品推荐
相关产品推荐

