2017-04-16 13 views
0

私のhapi.jsアプリケーションでは、ルートコレクション用のプラグインを作成しました。プラグインには、ルートを定義するためのインデックスファイルと、ハンドラを定義するコントローラファイルが含まれています。次のコードは、アプリケーションの開始点です。hapi.jsでルートハンドラをグループ化するには

index.js

exports.register = function (server, options, next) { 
    server.route({ 
    method: 'GET', 
    path: '/coins', 
    handler: require('./getCoins') 
    }); 

    next(); 
}; 

getCoins.js

module.exports = function (request, reply) { 
    reply('get all coins called'); 
}; 

予想通りこれは動作します。この問題は、複数のハンドラを1つのファイルに結合しようとすると発生します。以下のように二つのファイル(index.jscontroller.js)から問題のコードは次のとおりです。

index.js

var controller = require('./controller.js'); 

exports.register = function (server, options, next) { 
    server.route({ 
    method: 'GET', 
    path: '/coins', 
    handler: controller.getAllCoins() 
    }); 

    server.route({ 
    method: 'POST', 
    path: '/coins', 
    handler: controller.createCoin() 
    }); 

    next(); 
}; 

controller.js

var exports = module.exports = {}; 

exports.getAllCoins = function (request, reply) { 
    reply('get all coins called'); 
}; 

exports.createCoin = function(request, reply) { 
    reply('create new coin called'); 
}; 

、このように私のコードを構成するとき、私はERROR: reply is not a functionで終わります。応答オブジェクトはまったくインスタンス化されていないようです。私は別のファイルで各ハンドラを定義することができますが、それは動作しますが、可能ならばハンドラを同じファイルに保存したいと思います。私はここで何が欠けていますか? console.log(controller);

{ 
    getAllCoins: [Function], 
    createCoin: [Function], 
    getCoin: [Function], 
    updateCoin: [Function], 
    deleteCoin: [Function] 
} 
+0

インデックスファイル内のコントローラオブジェクトの値は何ですか? console.logを使用してください、輸出に何らかの問題がある必要があります –

+0

きれいな書式設定を維持するために質問に結果を追加しました。 – ThomasNichols89

+0

非常に奇妙なことに、あなたのコードのどこでも矢印関数が使われていますか? –

答えて

0

の内容を追加

EDITindex.jsファイル内handler: controller.getAllCoins()行は名前の変数ではなく、関数呼び出しを期待していることが判明しました。その行をhandler: controller.getAllCoinsに変更すると問題が解決しました。

関連する問題