【发布时间】:2014-08-08 14:55:05
【问题描述】:
我被困在一个应该简单的问题上几个小时了,类似的问题对我没有帮助 =/
我正在使用 kraken.js,因为它具有我需要的所有开箱即用功能,而且我的路线有问题:Error: Route.get() requires callback functions but got a [object Undefined]。
所以,在我的config.json 中,我将路由器设置为:
“路由器”:{
“模块”: {
“参数”:[{“索引”:“路径:./路由”}]
}
}
我的routes.js 看起来像这样:
'use strict';
module.exports = function (router) {
var controllers = require('./controllers');
router.get('/', controllers.index);
//router.get('/offer', controllers.offer);
//router.get('/specifications', controllers.specifications);
router.get('/setLocale/:locale', function (req, res) {
res.cookie('locale', req.params.locale);
res.redirect('/');
});
};
我有这个架构:
[ROOT]
|-> controllers
|-> index.js
|-> offer.js
|-> specifications.js
|-> routes.js
|-> models
|-> index.js
|-> offer.js
|-> specifications.js
|-> [some other folders and files]
这是我的控制器:
index.js:
'use strict';
var IndexModel = require('../models/index');
exports.index = function(req, res) {
var model = new IndexModel();
res.render('index', model);
};
offer.js:
'use strict';
var OfferModel = require('../models/offer');
exports.offer = function(req, res) {
var model = new OfferModel();
res.render('offer', model);
};
规范.js:
'use strict';
var SpecificationsModel = require('../models/specifications');
exports.specifications = function(req, res) {
var model = new SpecificationsModel();
res.render('specifications', model);
};
如您所见,这 3 个控制器遵循相同的格式,但只有 controller.index 回调有效。当我取消注释 controller.[order|specifications] 行时,它给我一个调用未定义对象而不是函数的错误,为什么会这样?
另外,我尝试在我的控制器中的每次导出之前添加module.,并且错误消失了(这似乎是一件好事),但我告诉我路由没有链接到任何文件......
如果有人能帮忙,那就太好了。
【问题讨论】:
-
如果将 routes.js 中的第 4 行更改为
var controllers = require('./controllers')();(末尾有括号),是否会有所不同? -
返回错误就行了:
uncaughtException object is not a function. TypeError: object is not a function.
标签: express callback routes kraken.js