【问题标题】:grouping express routes into a single file将快速路线分组到一个文件中
【发布时间】:2021-09-07 00:47:07
【问题描述】:

我尝试使用 app.use 将路线表达到单个文件中

app.js

import express from 'express'
import testRouter from 'testRouter'

const app = express()

app.use('/testRouter', testRouter)

app.listen(3000)

testRouter.js

import express from 'express'
const router = express.Router
router.get("/page1", function (req, res){
   res.send("test")
})

export default router

使用模块导出是一种官方的方法,它有效

但是为什么函数内部的路由器定义不能像下面这样工作?

app.js

import express from 'express'
import testRouter from 'testRouter'

const app = express()

app.use('/testRouter', function (){
   const router = express.Router()
   router.get("/page1", function (req, res){
       res.send("test")
   })
   return router
}))

app.listen(3000)

【问题讨论】:

  • 在正确的代码中,app.use() 调用的第二个参数是路由器对象。在错误代码中,第二个参数是一个在用户访问localhost:3000/testRouter 之前不会运行的函数。要在单个文件中执行相同的操作,您需要实际编写执行相同操作的代码。你可以简单地改用app.get("/testRouter/page1", ...);

标签: javascript node.js express


【解决方案1】:

我不相信app.use('/test/Router', function() { }) 中的代码在用户访问您的测试/路由器页面至少一次之前执行。我也不确定您是否可以在没有最终终端端点的情况下使用中间件(“使用”)。

【讨论】:

    【解决方案2】:

    因为在官方文档中testRouter是一个Object

    app.use('/testRouter', Object)
    

    你把函数放了

    app.use('/testRouter', Functon)
    

    【讨论】:

    • 我通过将函数重写为立即调用函数来解决它。感谢您抽出宝贵时间
    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    相关资源
    最近更新 更多