Метеор: ReferenceError: myAdminHookFunction не определен

Следуя учебнику Meteor Мэтью Платтса.

В главе 4, раздел first_app_part_3#uid313" rel="nofollow">4.2.5 Принудительный вход , когда я реализую код, я получаю следующую ошибку:

Your app is crashing. Here's the latest log.


/Users/TXC/.meteor/packages/meteor-tool/.1.1.3.1wysac9++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:245
                        throw(ex);
                              ^
ReferenceError: myAdminHookFunction is not defined
    at app/both/router.js:31:23
    at app/both/router.js:33:3
    at /Users/TXC/code/foosboom-meteor/.meteor/local/build/programs/server/boot.js:222:10
    at Array.forEach (native)
    at Function._.each._.forEach (/Users/TXC/.meteor/packages/meteor-tool/.1.1.3.1wysac9++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11)
    at /Users/TXC/code/foosboom-meteor/.meteor/local/build/programs/server/boot.js:117:5
Exited with code: 8
Your application is crashing. Waiting for file change.

ОБНОВЛЕНИЕ: все работает нормально, пока я не обновлю код, как предложено в Listing 4.26: both/router.js.

ОБНОВЛЕНИЕ 2: вот содержимое файла router.js:

Router.configure({
  layoutTemplate: 'layout',
  loadingTemplate: 'loading'
});

Router.route('/', {
  name: 'games',
  waitOn: function(){
    return [Meteor.subscribe("games"), Meteor.subscribe("teams")];
  }
});

Router.route('/teams', {
  waitOn: function(){
    return Meteor.subscribe("teams");
  }
});

var requireLogin = function(){
  if(!Meteor.user()){
    if(Meteor.loggingIn()){
      this.render("loading");
    } else {
      this.render("accessDenied");
    }
  } else {
    this.next();
  }
}

Router.onBeforeAction(requireLogin);

Я просмотрел свой код три раза и не увидел, что пошло не так: есть идеи?


person Thibaud Clement    schedule 16.07.2015    source источник
comment
Можете ли вы опубликовать свой файл router.js? Похоже, проблема на уровне 31.   -  person Jordan Speizer    schedule 16.07.2015
comment
Только что сделал это. Но ответ @JordanSpeizer решил проблему. Спасибо, что посмотрели.   -  person Thibaud Clement    schedule 17.07.2015


Ответы (1)


Похоже, в этом уроке опечатка:

Router.onBeforeAction(myAdminHookFunction, {
 only: ['admin']
 // or except: ['routeOne', 'routeTwo']
});

Должно выглядеть так:

Router.onBeforeAction(requireLogin, {
 only: ['admin']
 // or except: ['routeOne', 'routeTwo']
});

поэтому myAdminHookFunction следует заменить на requireLogin.

person Jordan Speizer    schedule 16.07.2015