出口路线在Koa

时间:2016-04-24 04:28:10

标签: javascript node.js koa koa-router koa2

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

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

路由/ 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

路由/ index.js

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

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

export default router.routes

当我以第二种方式进行时,为什么它不起作用?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

You have to add a method:

router.allowedMethods()

like this:

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