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

app.use(router(app)); 

diesen Fehler Verwenden Exception:'KOA-Routers, app.use (Router (APP)) wirft einen "erfordert eine Generatorfunktion" error msg

AssertionError: app.use() requires a generator function

Viele Codebeispiel sagt Setup Koa-Router auf diese Weise. Angeblich fügt es der Koa-App Methoden hinzu.

+0

Das koa-Router-Paket geändert, ein paar Monate zurück und entfernt, um die Funktionalität des App-Objekt zu erweitern, wie Sie oben codiert haben ... Früher hat es so funktioniert, aber es war eine bahnbrechende Veränderung https://github.com/alexmingoia/koa-router/issues/120. –

+0

@James Wow. Kann so verwirrend sein, wenn man versucht zu lernen. Können Sie Ihren Kommentar als Antwort posten, damit ich ihn als beantwortet markieren kann? Können Sie auch hinzufügen, welche Code-Syntax ich stattdessen verwenden sollte. – Rick

Antwort

7

Das koa-Router-Paket geändert, ein paar Monate zurück und entfernt, um die Funktionalität des App-Objekt zu erweitern, wie Sie oben codiert haben ... Es wird verwendet, so zu arbeiten, aber es war ein Bruch Änderung:

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

ist ein Beispiel dafür, wie Sie Setup-Routen jetzt:

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

Danke und Danke für deine tollen Koa-Lernvideos auf YouTube! [link] (https://www.youtube.com/channel/UC4nNCN49Fxexd30qtbzPDkg) – Rick

+0

Bitte beachten Sie, dass die neueren Versionen von Koa-Router das genaue Problem als OP haben, wenn Sie den obigen Code verwenden. Dies liegt daran, dass Koa-Router nach Koa2 verschoben wurde. Die Verwendung eines älteren Koa-Routers könnte das Problem lösen. Siehe https://github.com/alexmingoia/koa-router/issues/207 – RajV

0

Es wird nicht funktionieren, weil app ein Objekt ist. Versuchen Sie Einrichten des Routers wie:

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

Hope this löscht Sie up :)

1

Zuerst ändern Sie Ihre:

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

zu

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

Nach das, fügen Sie einige Router-Regel, fo r Beispiel:

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

Und am Ende all diese Schreib: app.use(router.routes()); - diese Zeile ist ein Schlüsselfaktor hier ... Und du bist fertig.

Verwandte Themen