2015-07-10 31 views
6
var app = require('koa')(); 
var router = require('koa-router'); 

app.use(router(app)); 

拋出這個錯誤:使用「KOA路由器」,app.use(路由器(APP))拋出一個「需要生成函數」錯誤味精

AssertionError: app.use() requires a generator function

大量的示例代碼,以說這樣設置koa-router。它應該會向koa應用程序添加方法。

+0

相思樹路由器封裝改變幾個月前和刪除功能擴展的應用程序對象,如你上述編碼...它曾經以這種方式工作,但它是一個突破性的變化https://github.com/alexmingoia/koa-router/issues/120。 –

+0

@James 哇。嘗試學習時可能非常混亂。你可以發表你的評論作爲答案,所以我可以將其標記爲已回答。你還可以添加我應該使用的代碼語法嗎? – Rick

回答

7

相思樹路由器封裝改變幾個月前和刪除功能擴展的應用程序對象,您在上面......它曾經工作的方式編碼的,但它是一個重大更改:

http://github.com/alexmingoia/koa-router/issues/120

這裏是你現在設置路由如何一個例子:

var app = require('koa')(); 
var router = require('koa-router'); 

// below line doesn't work anymore because of a breaking change 
// app.use(router(app)); 

var api = router(); 

api.get('/', function *(){ 
    this.body = 'response here'; 
}); 

app 
    .use(api.routes()) 
    .use(api.allowedMethods()); 

app.listen(3000); 
+0

謝謝並感謝您在YouTube上的精彩koa學習視頻! [鏈接](https://www.youtube.com/channel/UC4nNCN49Fxexd30qtbzPDkg) – Rick

+0

請注意,如果您使用上面的代碼,koa-router的較新版本將具有與OP完全相同的問題。這是因爲koa-router已經轉移到koa2。使用較舊的koa路由器可能會解決此問題。請參閱https://github.com/alexmingoia/koa-router/issues/207 – RajV

0

它不會工作,因爲app是一個對象。嘗試設置你的路由器,如:

var app = require('koa')(); 
var Router = require('koa-router'); 
var pub = new Router(); 
app.use(pub.routes()); 

希望這將清除您:)

1

首先,你的改變:

var router = require('koa-router');

var router = require('koa-router')();

後那插入一些路由器規則fo R實施例:

router.get('/', function *(next) { 
    this.status = 200; 
    this.body = {"Welcome":"Hello"}; 
}); 

,並在所有這寫的結尾:app.use(router.routes()); - 這條線是這裏的關鍵因素......而你所有的設置。