2016-11-03 7 views
0

私は発電機を使用しているときに、要求に応えるためにkoaを取得するのに苦労しました。 これを示すためにtest.jsアプリを作成しました。発電機を使用していないkoa-router

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

router.get('/', function *(next){ 
    this.body = "hello world"; 
    console.log("success") 
}); 

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

app.listen(3000); 
console.log("listening on 3000"); 

私はノードv4.6.1

エラーが発生しないでサーバを実行するが、私はGETリクエストを送信するとき、私はNot Foundなしコンソールログを取得します。

このコードは、しかし作品:

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

router.get('/', function (ctx){ 
    ctx.body = "hello world"; 
    console.log("success") 
}); 

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

app.listen(3000); 
console.log("listening on 3000"); 

任意のアイデアなぜ発電機は実行されませんか?

+0

これはどのバージョンですか? – iandotkelly

+0

そして、どのバージョンのkoa-router? – Cymen

+0

これはkoa v2とkoa-router v7.0.1です。 –

答えて

1

koaとkoa-routerの@nextバージョンを使用している場合、Koa v1用のジェネレータ関数ではなく、async関数をミドルウェア用に使用する必要があります。

例:もちろん

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

router.get('/', async function (ctx){ 
    // You can use `await` in here 
    ctx.body = "hello world"; 
    console.log("success") 
}); 

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

app.listen(3000); 
console.log("listening on 3000"); 

async/awaitは、今あなたはノードV7を使用して--harmony-async-awaitフラグを使用している場合を除き、サポートされていません。ノードv4で使用する場合は、コードを翻訳するためにbabelのようなものを使用する必要があります。あなたのサーバーサイドコードのビルドステップを望んでいない場合は、Koa v1を使用してジェネレータ機能を使用することをお勧めします。

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

var route = router();     // These three lines will help you 
app.use(route.routes());    // to route to your given path and  
route.get("/user/", functionname);  // will call the generator function. 

function *functionname(next){ 
console.log('in side the function'); 
this.body="hi this is my new page"; 

yield next; 
}; 
+0

このコードスニペットで問題を解決できるかもしれませんが[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers )本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 –

関連する問題