首页 > 解决方案 > Getting an error require(...) is not a function in java script while loading a 'connect-mongo' module

问题描述

I am getting a TypeError: require(...) is not a function every time i run my server.js file Every time i run i am getting this error

This is the server file that makes issues when trying to run const MongoDbStore = require('connect-mongo')(session).

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 || 2000

const mongoose = require('mongoose')
const session = require('express-session')
const flash = require('express-flash')
const MongoDbStore = require('connect-mongo')(session)

// Database connection 
const url = 'mongodb://localhost/pizza';
mongoose.connect(url, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true,
    useFindAndModify: true
});
const connection = mongoose.connection;

connection.once('open', () => {
    console.log('Database connected...');
}).catch(err => {
    console.log('Connection failed...')
})

//Session confg 
app.use(session({
    secret: process.env.COOKIE_SECRET,
    resave: false,
    saveUninitialized: false,
    cookie: {
        maxAge: 10006024
    }

}))

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
    })
})

标签: javascriptexpress

解决方案


你好@pranay_gaurav123,

使用下面的代码,它将起作用。看起来 connect-mongo 最近更新了。我也遇到了这个问题,这就是我解决它的方法。

const session = require("express-session");
const MongoStore = require("connect-mongo").default;

//session configuration
const mongoStore = MongoStore.create({
  mongoUrl: url,
  collectionName: "sessions",
});
app.use(
  session({
    secret: process.env.COOKIE_SECRET,
    resave: false,
    saveUninitialized: false,
    store: mongoStore,
    cookie: { maxAge: 1000 * 60 * 60 * 24 }, //cookie valid for 24 hours
  })
);
where url is "mongodb://localhost/pizza"

希望我能帮助你:)


推荐阅读