调用MongoStore.create时报Cannot read property 'create' of undefined如何解决
问题解决方法
错误原因
TypeError: Cannot read property 'create' of undefined
该错误是因为connect-mongo包的导入语法不符合你安装的版本要求,你代码中加的.default是ES模块导入的写法,Node.js默认的CommonJS规范(require导入方式)不需要加这个后缀,导致拿到的MongoStore为undefined,调用create方法自然报错。
具体修复步骤
- 第一步:修改
connect-mongo的导入语句
把原有代码:
const MongoStore=require('connect-mongo').default
替换为:
const MongoStore = require('connect-mongo')
- 第二步:检查MongoDB连接地址配置
你代码里数据库主连接用的是本地地址mongodb://localhost/pizza,但session存储配置里用的是环境变量process.env.MONGO_URI,需要确保项目根目录的.env文件里已经配置了正确的MONGO_URI值,也可以直接把session配置里的地址替换为本地连接地址,避免环境变量缺失报错:
app.use(session({ secret:process.env.COOKIE_SECRET, resave:false, store: MongoStore.create({ mongoUrl: 'mongodb://localhost/pizza' }), saveUninitialized:false, cookie:{maxAge:1000*60*60*24} }));
验证修复
修改完成后重启服务,就不会再报该属性未定义的错误,session会正常存储到MongoDB的sessions集合中。
内容的提问来源于stack exchange,提问作者shatakchhi
相关产品推荐
相关产品推荐

