MongoStore.create({.............Не удается прочитать свойство «создать» неопределенного

avatar
akap
12 сентября 2021 в 09:23
554
1
0

Я перепробовал все возможные шаги, с которыми столкнулся, но проблема не решается. Ошибка показывает:

C:\Users\...............\server.js:35
store: MongoStore.create({
                  ^

TypeError: Cannot read property 'create' of undefined
    at Object.<anonymous> (C:\Users\..............\server.js:35:19)
require('dotenv').config()
const express = require('express')
const app=express();
const ejs=require('ejs')
const path = require('path')
const expressLayout = require('express-ejs-layouts')
const PORT =process.env.PORT || 3300
const mongoose= require('mongoose')
const session = require('express-session')
const flash = require('express-flash')
const MongoStore=require('connect-mongo').default

//Database connection

const url='mongodb://localhost/pizza';
mongoose.connect(url, {useNewUrlParser:true, 
     useUnifiedTopology:true})
.then(()=>{
    console.log('Database connected...');
}).catch(error => {
    console.error('Connection failed...');
    console.error(error.message);
});//event listener

//Session store
// let  mongoStore= MongoDbStore({
//     mongooseConnection:mongoose.connection ,
//     collection: 'sessions'
// })
//Session Configuration
//session cant work without cookies so we use secret key for encrypting the cookies
app.use(session({
secret:process.env.COOKIE_SECRET,
resave:false,
store: MongoStore.create({ 
    mongoUrl: process.env.MONGO_URI 
}),
saveUninitialized:false,
cookie:{maxAge:1000*60*60*24} // time in milliseconds-equivallent to 24 hours
}));


app.use(flash());
//Assets
app.use(express.static('public'))

//set template engine
app.use(expressLayout)
app.set('views',path.join(__dirname,'/resources/views'))
app.set('view engine','ejs')

require('./routes/web')(app)



app.listen(PORT , ()=>{
    console.log(`Listening on port ${PORT}`)
})
Источник
jonrsharpe
12 сентября 2021 в 09:25
0

Если MongoStore не определено, то, по-видимому, require('connect-mongo') не предоставил объект со свойством по умолчанию... так что вы проверили, что это есть?

Sebastian Simon
12 января 2022 в 22:52
0

Связано: TypeError: MongoStore не является конструктором.

Ответы (1)

avatar
Valentin Stoykov
12 сентября 2021 в 10:11
1

Вы пытались удалить свойство default из импорта connect-mongo? документация для библиотеки connect-mongo, похоже, импортирует MongoStore без нее.

// Your import
const MongoStore = require('connect-mongo').default

// Their import
const MongoStore = require('connect-mongo')

//Change your connection as below to fix
//'You must provide either mongoUrl|clientPromise|client in options' error
app.use(
  session({
    store: MongoStore.create({ mongoUrl: process.env.MONGO_URI }),
    ...options
  })
);
akap
12 сентября 2021 в 14:14
0

Утверждение не удалось: вы должны указать либо mongoUrl|clientPromise|client в параметрах C:\Users\...........\realtime-pizza\node_modules\connect-mongo\build\main\lib\MongoStore.js :119 throw new Error('Не удается запустить клиент. Укажите правильные параметры'); ^ Ошибка: не удается запустить клиент. Укажите правильные варианты