【问题标题】:My Local Host is keep loading although my mongodb server is connected amd running尽管我的 mongodb 服务器已连接并正在运行,但我的本地主机仍在继续加载
【发布时间】:2021-07-05 14:59:00
【问题描述】:

我正在关注 brad Traversy Nodejs 教程,我的服务器已连接并启动,我的 Mongodb 连接也在运行,但 localhost 一直在加载并且没有响应。 我检查了我的 mongo 连接 URL,密码和用户名都正确。我还允许来自所有来源的网络访问。 这以前可以完美运行,但现在一直在加载和加载

我的 db.js

const mongoose = require("mongoose")

const connectDB = async () => {
    try {
        const conn = await mongoose.connect(process.env.MONGO_URI, {
            useNewUrlParser: true,
            useFindAndModify: false,
            useUnifiedTopology: true
        })
        console.log(`MongoDB connected ${conn.connection.host}`)
    } catch (err) {
        console.error(err)
        process.exit(1)
    }
}

module.exports = connectDB

我的 app.js

const express = require("express")
const path = require("path")
const dotenv = require('dotenv')
const morgan = require('morgan')
const exphbs = require('express-handlebars')
const passport = require('passport')
const connectDB = require('./config/db')
const routes = require('./routes/index')
const session = require("express-session")
const MongoDBStore = require('connect-mongodb-session')(session);
const mongoose = require('mongoose')
const methodOverride = require('method-override')

//locad config 
dotenv.config({ path: './config/config.env' })
connectDB()


//passport config
require('./config/passport')(passport)

const app = express()
const PORT = process.env.PORT || 5000


//body parser 
app.use(express.urlencoded({ extended: false }))
app.use(express.json())

//method override

// Method override
app.use(
    methodOverride(function (req, res) {
      if (req.body && typeof req.body === 'object' && '_method' in req.body) {
        // look in urlencoded POST bodies and delete it
        let method = req.body._method
        delete req.body._method
        return method
      }
    })
  )

//logging 
if (process.env.NODE_ENV === 'development') {
    app.use(morgan('dev'))
}


//handlebars helpers
const { formatDate, truncate, stripTags, select } = require('./helpers/hbs')


//Hnadlebars
app.engine('.hbs', exphbs({ helpers: { formatDate, truncate, stripTags, select }, defaultLayout: 'main', extname: '.hbs' }));
app.set('view engine', '.hbs');

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


//set passport middleware
app.use(passport.initialize())
app.use(passport.session())

//set global variable
app.use(function (req, res, next) {
    res.locals.user = req.user || null
})

//static folder
app.use('/', express.static(path.join(__dirname, 'public')))


//Routes
app.use('/', routes);
app.use('/auth', require('./routes/auth'));
app.use('/stories', require('./routes/stories'));


//listen
app.listen(PORT, console.log(
    `server is running in ${process.env.NODE_ENV} mode on port  ${PORT}`
))

我的 ./routes/index.js

const express = require('express')
const router = express.Router()
const { ensureAuth, ensureGuest } = require('../middleware/auth')
const Story = require('../models/story')
//@desc Login/Landing Page
//@route GET/

router.get('/', ensureGuest, (req, res, next) => {

    res.render("login", {
        layout: "login"
    })
})

//@desc Login/Landing Page
//@route GET/
router.get('/dashboard', ensureAuth, async (req, res, next) => {
    console.log(req.user)
    try {
        const stories = await Story.find({ user: req.user._id }).lean() //plain Js object

        res.render("dashboard", {
            name: req.user.firstName,
            stories
        })
    } catch (error) {
        console.log('Stories error', error)
        res.render('error/500')
    }

})

module.exports = router

我的浏览器

【问题讨论】:

  • 你能提供一些日志吗?什么页面一直在加载?
  • 我已经编辑了浏览器的图片@ĐăngKhoaĐinh
  • const PORT = process.env.PORT || 5000。这一行表明,默认情况下,您的项目将在端口 5000 上运行,访问的 URL 应为:localhost:5000。这可能是一个原因吗?
  • 我已尝试更改浏览器和端口。在我的配置文件中,我定义了端口 3000

标签: node.js localhost


【解决方案1】:

我发现如果您使用的是中间件,那么最后必须调用下一个函数,这就是我的页面无法加载的原因

错误出现在 //设置全局变量中间件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多