2014-10-29 12 views
20

Qualcun altro riceve il seguente errore da Iron-Router dall'aggiornamento di Meteor alla versione 1.0?Meteor v 1.0 e Iron: Router

Si prega di postare qui se si sa come risolvere questo problema.

Itinerario non inviato mai reso. Hai dimenticato di chiamare this.next() in un onBeforeAction?

Router.map(function() { 
    Router.route('profileShow', { 

     waitOn: function() { 
      if (Meteor.user()) { 
       Meteor.subscribe('userData'); 
      } else { 
       this.next(); 
      } 
     }, 

     data: function() { 
      if (Meteor.user()) { 
       return {profile: Meteor.user().profile}; 
      } 
     } 
    }); 
}); 

risposta

29

C'era un non cambiamento retrocompatibile-in l'ultima versione di router Ferro. La guida di migrazione dice:

onRun e onBeforeAction ganci ora richiedono di chiamare this.next(), e non più prendere un argomento pause(). Quindi il comportamento predefinito è invertito. Ad esempio, se si ha:

Router.onBeforeAction(function(pause) { 
    if (! Meteor.userId()) { 
    this.render('login'); 
    pause(); 
    } 
}); 

Avrai bisogno di aggiornarlo per

Router.onBeforeAction(function() { 
    if (! Meteor.userId()) { 
    this.render('login'); 
    } else { 
    this.next(); 
    } 
}); 

More information

In te Nel caso specifico, la correzione da libro sarebbe aggiungere this.next() alla fine di onBeforeAction. Tuttavia, si dovrebbe invece usare waitOn:

waitOn: function() { 
    return Meteor.subscribe("userData"); 
} 

In questo modo, è possibile impostare un loadingTemplate che apparirà durante la sottoscrizione userData sta caricando.

+3

Solo per aggiungere che potrebbe essere un onRun che causa l'errore anche se il messaggio dice che era un OnBeforeAction. Il messaggio di errore potrebbe essere migliore. –

Problemi correlati