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

Теперь я должен выяснить, почему маршруты работают, но страницы пусты... В любом случае, это еще одна проблема. Спасибо Килиан.

Другие вопросы по тегам