2016-04-24 9 views
0

私のルートをエクスポートするときに奇妙な問題が発生しています。何らかの理由で、このコードは私の作品:Koaでのルートのエクスポート

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に電話しようとすると、エラーが発生します:

私はそれを第二の方法を行う際に3210

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 

は、なぜそれが動作しませんか?

答えて

1

おそらくbound functionをエクスポートしたいので、thisはその内部にルータオブジェクトを参照します。

bind operatorでうまくいく可能性があります。 async/awaitを使用しているので既に利用可能だと思います。このよう

router.allowedMethods() 

:あなたがメソッドを追加する必要が

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

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

export default ::router.routes 
+0

ああ、なるほど、私は '輸出デフォルトrouter.routes.bind(ルータ)をしなければなりませんでした'。そして、私はバインド演算子について、それを簡略化して分かりませんでした。共有してくれてありがとう!私はそれが仕様に入ることを願っています。 – saadq

0

app.use(router.routes(), router.allowedMethods()) 
関連する問題