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

如何解决mongo-connect 错误与 mongo-connect(session)

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

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

我遇到了这个错误

TypeError: 类构造函数 MongoStore 不能在没有的情况下被调用 '新的' 在对象。 (/Users/souhailmohamed/project/devops/story website/app.js:11:20) 在 Module._compile (internal/modules/cjs/loader.js:1063:30) 在 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) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) 在内部/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 })
}))

我非常了解

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

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

解决方法

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

const MongoDbStore = require('connect-mongo');

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

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

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

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

//sessions
app.use(session({
    secret: 'keyboard cat',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',store: store

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

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

,

好的,所以我找到了解决它的方法,我不知道原因,使用哪个版本的express,但我在mongo-connect之后删除了(会话)并将app.use更改为:

app.use(session({
    secret: 'story book',store: MongoStore.create({ mongoUrl: 'mongodb+srv://<id+ password>@cluster0.cq7f2.mongodb.net/DBname?retryWrites=true&w=majority' })
}))

,

针对“connect-mongo”文档here中的语法更改了某些规则

const MongoStore = require("connect-mongo");

  secret: 'keyboard cat',store: MongoStore.create({
    mongoUrl: process.env.MONGO_URI  //(URI FROM.env file)
  })
  //stroed it in database
}));
,

我有同样的问题。解决办法如下:

var session = require('express-session');
var MongoStore = require('connect-mongo');
var mongoose = require('mongoose');
mongoose.Promise = global.Promise;


app.use(session({
  secret : 'mysecretkey',resave : true,saveUninitialized : true,store :MongoStore.create({ mongoUrl: DBUrl })
}));

,

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

这是官方的migration guide


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

connect-mongo 3 to 4 diff

,

解决办法如下:

const session = require('express-session');
const MongoStore = require('connect-mongo');
const mongoose = require('mongoose');
app.use(session({
    secret: 'story book',store: new MongoStore({
      mongoUrl: mongoose.connection._connectionString,mongoOptions: {}
    })
}))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?