首页 文章

出口路线在Koa

提问于
浏览
0

导出我的路线时遇到一个奇怪的问题 . 出于某种原因,此代码适用于我:

app.js

import Koa from 'koa'
import routes from './routes/index'

const app = new Koa()

app.use(routes)

app.listen(3000, () => {
  console.log('Server listening at http://localhost:3000')
})

export default app

routes/index.js

import Router from 'koa-router'
const router = new Router()

router.get('/', async ctx => {
  await ctx.render('index')
})

export default router.routes()

但是当我只导出routes函数然后尝试在 app.js 中调用它时,我收到一个错误:

app.js

import Koa from 'koa'
import routes from './routes/index'

const app = new Koa()

app.use(routes())

app.listen(3000, () => {
  console.log('Server listening at http://localhost:3000')
})

export default app

routes/index.js

import Router from 'koa-router'
const router = new Router()

router.get('/', async ctx => {
  await ctx.render('index')
})

export default router.routes

当我第二种方式做的时候为什么它不起作用?

2 回答

  • 1

    你可能想导出一个bound function,所以 this 里面会引用一个路由器对象 .

    它可以用bind operator很好地完成 . 我相信它已经可用,因为你正在使用 async/await .

    import Router from 'koa-router'
    const router = new Router()
    
    router.get('/', async ctx => {
      await ctx.render('index')
    })
    
    export default ::router.routes
    
  • 0

    你必须添加一个方法:

    router.allowedMethods()
    

    像这样:

    app.use(router.routes(), router.allowedMethods())
    

相关问题