最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Route.get() requires a callback function but got a [object Undefined]. What did I do wrong? - Stack Overflow

programmeradmin2浏览0评论

I have checked many answers in other pages and forums, but I still don't get it. What did I do wrong? Help me

*edited. I have added requiring routes and app.use. It looks like function isLOggedIn is not exporting but I don't know how to do that. I did like this in another app, it worked there.

auth-routes.js

const express = require("express"),
  router      = express.Router(),
  passport    = require("passport")

function isLoggedIn(req, res, next) {
  if (req.isAuthenticated()) {
    return next()
  }

  res.redirect("/auth/login")
}

module.exports = router

user-routes.js

const express  = require("express"),
  router = express.Router(),
  authRoutes = require("./auth-routes")   

router.get("/profile", authRoutes.isLoggedIn, (req, res) => {
  res.render("user/profile", {user: req.user})
})

module.exports = router

requring routes

const titleRoutes = require("./routes/title-routes")
const authRoutes = require("./routes/auth-routes")
const userRoutes = require("./routes/user-routes")   

app.use

app.use(titleRoutes)
app.use("/auth", authRoutes)
app.use("/user", userRoutes)

I have checked many answers in other pages and forums, but I still don't get it. What did I do wrong? Help me

*edited. I have added requiring routes and app.use. It looks like function isLOggedIn is not exporting but I don't know how to do that. I did like this in another app, it worked there.

auth-routes.js

const express = require("express"),
  router      = express.Router(),
  passport    = require("passport")

function isLoggedIn(req, res, next) {
  if (req.isAuthenticated()) {
    return next()
  }

  res.redirect("/auth/login")
}

module.exports = router

user-routes.js

const express  = require("express"),
  router = express.Router(),
  authRoutes = require("./auth-routes")   

router.get("/profile", authRoutes.isLoggedIn, (req, res) => {
  res.render("user/profile", {user: req.user})
})

module.exports = router

requring routes

const titleRoutes = require("./routes/title-routes")
const authRoutes = require("./routes/auth-routes")
const userRoutes = require("./routes/user-routes")   

app.use

app.use(titleRoutes)
app.use("/auth", authRoutes)
app.use("/user", userRoutes)
Share Improve this question edited Feb 14, 2020 at 5:26 Uwe Keim 40.8k61 gold badges190 silver badges304 bronze badges asked Dec 27, 2019 at 21:30 Booi MangangBooi Mangang 311 silver badge4 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 5

In auth-routes.js you don't export isLoggedIn. So in user-routes.js, authRoutes.isLoggedIn is undefined.

You can change:

module.exports = router

into:

exports.isLoggedIn = isLoggedIn

or using module.exports into:

module.exports = { isLoggedIn: isLoggedIn }

A useful link to understand export in nodejs https://www.sitepoint./understanding-module-exports-exports-node-js/

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论