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

ルート/index.js

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

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

export default router.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 番目の方法で実行すると機能しないのはなぜですか?

4

2 に答える 2

1

おそらくバインドされた関数をエクスポートしたいので、その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
于 2016-04-24T21:15:14.567 に答える
0

メソッドを追加する必要があります:

router.allowedMethods()

このような:

app.use(router.routes(), router.allowedMethods())
于 2016-04-25T09:07:58.207 に答える