MongoStore 的类构造函数不能在没有使用 'new' 命令的情况下调用 (Express-NodeJs) 后端

4

我正在创建react-auth。首先,我创建了服务器端。我需要连接mongodb,但我没有成功。

const session = require('express-session') const Mongostore = require('connect-mongo')(session) ``const cors = require('cors')

app.use(session({ secret: 'secret', store: new Mongostore({ mongooseConnection: mongoose.connection }), resave: true, saveUninitialized: true }))

6个回答

12

对于那些想要使用最新版本的connect-mongo的人,新的语法需要从require调用中删除参数session,并不再使用new,而是使用方法.create。

以下是文档推荐的做法:

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

app.use(session({
  secret: 'foo',
  store: MongoStore.create(options)
}));

基本用法如下:

app.use(session({
  store: MongoStore.create({ mongoUrl: 'mongodb://localhost/test-app' })
}));

9

谢谢,问题已解决。我还无法通过重新使用到一个副本集的现有连接和所需的身份验证来使新语法store:MongoStore.create({mongooseConnection:mongoose.connection})生效。 - Peter Thoeny

1
我也遇到了相同的错误,我所做的是运行命令 npm i connect-mongodb-session 安装 connect-mongodb-session 模块。
const MongoStore = require('connect-mongodb-session)(session)

我随后通过session创建了一个中间件。
    app.use(
      session({
      secret: 'keyboard cat',
      resave: false,
      saveUninitialized: false,
      store: new MongoStore({ mongooseConnection: process.env.MONGO_URI }),
  })
);

我没有直接编写我的URI,而是从.env文件中使用process.env.MONGO_URI加载它。


1
      const session=require("express-session");
  const MongoStore=require("connect-mongo");
//*****************
  app.use(session({
   secret:"secret",
   cookie:{maxAge:60000},
   resave:false,
   saveUninitialized:false,
   store:MongoStore.create({mongoUrl:process.env.MONGO_URI}),
  

0
请在您的代码中进行以下更改,从:
const MongoStore = require('connect-mongo')(session);

请使用以下替代方案:
const MongoStore = require('connect-mongo')

并在会话对象选项中使用:

store: MongoStore.create({ mongoUrl: process.env.CONNECTIONSTRING })

process.env.CONNECTIONSTRING是mongodb提供的链接,您可以将其存储在.env文件中

我尝试按上面建议的降级mongo-connect版本,但发现保持与当前版本的最新状态并使用新方法创建具有不同密钥名称的内容更可靠,遵循文档指南。

enter image description here


0
为了修复它,我将代码更新为以下内容:
const MongoStore = require('connect-mongo'); 
app.use(session({
  secret: 'sessionKey', 
  resave: true, 
  saveUninitialized: false, 
  store: new MongoStore({
      mongoUrl: 'mongodb://127.0.0.1/database_name', 
  })
})); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接