mongo-connect(session) 的 mongo-connect 错误

Sou*_*med 11 session node.js express mongo-collection

在四处搜索之后,我在code关于此错误的内容中找不到任何解决方案或错误。我app.js在我的节点 JS 应用程序中有我的文件,并带有mongo-connect声明:

const MongoStore = require('connect-mongo')(session)
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

类型错误:类构造函数 MongoStore 不能在对象中没有“new”的情况下被调用。(/Users/souhailmohamed/project/devops/story website/app.js:11:20) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Object.Module._extensions..js ( internal/modules/cjs/loader.js:1092:10) 在 Module.load (internal/modules/cjs/loader.js:928:32) 在 Function.Module._load (internal/modules/cjs/loader.js: 769:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) at internal/main/run_main_module.js:17:47

下面是我的app.use代码:

app.use(session({
    secret: 'story book',
    resave: false,
    saveUninitialized: false,
    store: new MongoStore({ mongooseConnection: mongoose.connection })
}))
Run Code Online (Sandbox Code Playgroud)

我非常了解

const MongoStore = require('connect-mongo')(session)
Run Code Online (Sandbox Code Playgroud)

但我不明白这个错误。但它来自 youtube 的教程,来自 traversy media Link

小智 10

我在我的代码中遇到了同样的问题并使用这个解决了它:

const MongoDbStore = require('connect-mongo');
Run Code Online (Sandbox Code Playgroud)

从 require 语句中删除 (session) 并像这样更新 app.use():

// Session Config
app.use(
    session({
        secret: 'story book',
        resave: false,
        saveUninitialized: false,
        store: MongoDbStore.create({
            mongoUrl: YourDatabaseURL
        })
    })
);
Run Code Online (Sandbox Code Playgroud)


小智 5

我遵循同样的方法,所以我发现了一个 npm pakage connect-mongodb-session。安装它并使用与 Brad 在视频中使用的相同的会话代码

const MongoDBStore = require('connect-mongodb-session')(session);

//sessions
app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUnitialized: false,
    store: new MongoDBStore({
        mongooseConnection: mongoose.connection
    })
    //cookie: { secure: true }
}))

const store = new MongoStore({
    uri: 'your mongo uri' ,
    collection:'mySessions'
})

//express middleware
app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: false,
    store: store

// Don't create a session until something is stored 
// cookie: { secure: true } - this wont work without https
}))
Run Code Online (Sandbox Code Playgroud)

它还解决了我的重新登录问题。如果您关闭选项卡并租用本地主机,您就已经登录了


abe*_*ier 5

connect-mongo v4 引入了新的签名(与 v3 相比)。

这是官方迁移指南


此外,这里是我在特定项目中(使用mongoosedotenv)从connect-mongov3升级到 v4所做更改的快速差异:

连接蒙戈 3 到 4 差异