私の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.js
、controller.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]
}
インデックスファイル内のコントローラオブジェクトの値は何ですか? console.logを使用してください、輸出に何らかの問題がある必要があります –
きれいな書式設定を維持するために質問に結果を追加しました。 – ThomasNichols89
非常に奇妙なことに、あなたのコードのどこでも矢印関数が使われていますか? –