connect-mongo初始化失败:无法初始化客户端,请提供正确配置选项
我的server.js代码如下,已经查阅connect-mongo文档尝试各种方法,也卸载重装过connect-mongo,但还是报错。使用MongoDB Compass,因限制移除了额外连接代码,求解决。
const app = express(); const MongoDbStore = require("connect-mongo"); // Session config app.use( session({ secret: process.env.COOKIE_SECRET, resave: false, store: MongoDbStore.create({ mongoUrl: process.env.MONGO_CONNECTION_URL, }), saveUninitialized: false, cookie: { maxAge: 1000 * 60 * 60 * 24 }, }) );
报错信息:
Assertion failed: You must provide either mongoUrl|clientPromise|client in options
C:\Users\Tahmeed Ullah\Desktop\realtime-pizza\node_modules\connect-mongo\build\main\lib\MongoStore.js:119
throw new Error('Cannot init client. Please provide correct options');
^Error: Cannot init client. Please provide correct options
at new MongoStore (C:\Users\Tahmeed Ullah\Desktop\realtime-pizza\node_modules\connect-mongo\build\main\lib\MongoStore.js:119:19)
at Function.create (C:\Users\Tahmeed Ullah\Desktop\realtime-pizza\node_modules\connect-mongo\build\main\lib\MongoStore.js:136:16)
at Object.(C:\Users\Tahmeed Ullah\Desktop\realtime-pizza\server.js:37:25)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47
验证环境变量有效性
先确认process.env.MONGO_CONNECTION_URL是否正确加载:在代码中临时添加console.log(process.env.MONGO_CONNECTION_URL),运行后查看控制台是否输出正确的MongoDB连接字符串;同时确保已通过dotenv包加载.env文件(若未添加,需在代码顶部插入require('dotenv').config())。直接传入连接字符串测试
跳过环境变量,将MongoDB连接字符串直接写入配置,排查是否为环境变量加载问题:store: MongoDbStore.create({ mongoUrl: "mongodb://localhost:27017/your-db-name" // 替换为你Compass中的连接字符串 })复用已有MongoDB客户端实例
若已创建MongoDB客户端连接,可直接传入client参数:// 假设已存在client实例 const client = await MongoClient.connect(process.env.MONGO_CONNECTION_URL); // 修改session配置 store: MongoDbStore.create({ client: client.db() })指定数据库名称并检查版本兼容
对于connect-mongo v4+版本,可明确指定数据库名称,避免解析错误:store: MongoDbStore.create({ mongoUrl: process.env.MONGO_CONNECTION_URL, dbName: "your-db-name" // 替换为你的数据库名称 })
内容的提问来源于stack exchange,提问作者Tahmeedullah

