Node.js - Kraken.js - Ошибка в обратных вызовах маршрутизатора
Я застрял на простой задаче, которая должна быть простой, и подобные вопросы мне не помогли =/
Я использую kraken.js, потому что он имеет все необходимые функции из коробки, и у меня есть проблема с моими маршрутами: Error: Route.get() requires callback functions but got a [object Undefined]
,
Итак, по моему config.json
Я настроил свой маршрутизатор на это:
"router": {
"module": {
"arguments": [{ "index": "path:./ маршруты" }]
}
}
и мой 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);
};
Specification.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.
перед каждым экспортом в моих контроллерах и ошибка исчезает (что может показаться хорошим), но затем я говорю, что маршруты не ссылаются ни на какие файлы...
Если бы кто-то мог помочь, это было бы так здорово.
1 ответ
Я нашел ответ здесь. Я не могу требовать нескольких файлов только в одном требовании. Поэтому я добавил controllers/controllers.js
файл с:
'use strict';
module.exports= {
index : require('./index'),
offer : require('./offer'),
setLocale : require('./setLocale'),
specifications: require('./specifications')
};
и в моем routes.js
Я могу загрузить их, требуя ./controllers/controllers.js
Теперь я должен выяснить, почему маршруты работают, но страницы пусты... В любом случае, это еще одна проблема. Спасибо Килиан.