【问题标题】:Separating Express.js-Routes into separate Files将 Express.js-Routes 分离到单独的文件中
【发布时间】:2017-03-14 12:54:02
【问题描述】:

我正在使用 express.js 并尝试将我的路线分隔在一个单独的文件中。

这是摘自我的./app.coffee

viewsRouter = express.Router()

routesCallingViews = require('./app/routes/callingViews')

app.use '/', routesCallingViews.showApp viewsRouter, user, data
app.use '/', routesCallingViews.showSignUpForm viewsRouter
app.use '/', routesCallingViews.showLogInForm viewsRouter

./app/routes/callingViews 看起来像:

module.exports =

  showApp: (router, user, data) ->
    router.get '/', user.isSignedIn, (req, res) ->
      ...

  showSignUpForm: (router) ->
    router.get '/signup', (req, res) ->
      ...

  showLogInForm: (router) ->
    router.get '/login', (req, res) ->
      ...

我收到此错误:

Error: Route.get() requires callback functions but got a [object Undefined]

有什么建议吗?

【问题讨论】:

标签: javascript node.js express coffeescript


【解决方案1】:

执行您尝试的常见方法是将所有相关路由提取到单独的模块,您将在其中创建和导出路由器实例,例如:

// foo.js
'use strict'

const express = require('express')
const router = express.Router()

router.get('/', (req, res, next) => { ... })
router.post('/bar', (req, res, next) => { ... })
...

module.exports = router

然后从任何地方(通常来自server.js),您将连接您拥有的所有路由器,例如:

const fooRoutes = require('./foo')
app.use('/foo', fooRoutes)

所以你最终会得到:

GET /foo
POST /foo/bar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 2022-12-03
    相关资源
    最近更新 更多