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

app.use(router(app)); 

generuje ten błąd:Korzystanie 'koa-Router', app.use (router (APP)) wyrzuca "wymaga funkcję generatora" błędzie wiad

AssertionError: app.use() requires a generator function

Wiele mówi się przykładowy kod w ten sposób skonfiguruj koa-router. Podobno dodaje metody do aplikacji koa.

+0

Pakiet KOA-routera zmienił kilka miesięcy temu i usunięte funkcjonalność rozszerzyć przedmiot aplikacji, jak już zakodowane powyżej ... Kiedyś działało w ten sposób, ale była to przełomowa zmiana https://github.com/alexmingoia/koa-router/issues/120. –

+0

@James Wow. Może być tak mylące, gdy próbuje się uczyć. Czy możesz opublikować swój komentarz jako odpowiedź, dzięki czemu mogę oznaczyć go jako odpowiedź. Czy możesz również dodać, w jakiej składni kodu powinienem używać? – Rick

Odpowiedz

7

Pakiet KOA-routera zmienił kilka miesięcy temu i usunięte funkcjonalność rozszerzyć przedmiot aplikacji, jak już wyżej kodowane ... Kiedyś to działa w ten sposób, ale to było łamanie zmiana:

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

Oto przykład, w jaki sposób trasy obecnej konfiguracji:

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

Dziękuję i dziękuję za wspaniałe teledyski do nauki koa na YouTube! [link] (https://www.youtube.com/channel/UC4nNCN49Fxexd30qtbzPDkg) – Rick

+0

Należy pamiętać, że nowsze wersje routera koa będą miały dokładnie taki sam problem jak OP, jeśli użyje się powyższego kodu. To dlatego, że koa-router przeniósł się do koa2. Użycie starszego routera koa może rozwiązać problem. Zobacz https://github.com/alexmingoia/koa-router/issues/207 – RajV

0

Nie zadziała, ponieważ app jest obiektem. Spróbuj ustawić router jak:

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

nadzieję, że to czyści was :)

1

pierwsze, zmienić:

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

do

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

Po to, wstaw trochę reguły routera, fo r Przykład:

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

A na końcu tego wszystkiego napisz: app.use(router.routes()); - ta linia jest kluczowym czynnikiem tutaj ... I gotowe.

Powiązane problemy