Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Iron Router, "Router is not defined"

I've added iron-router to my app to handle routing between the home page, an about page and the main page of the app which is a map

After adding iron-router with meteorite, I wrote a router.js file and placed it in my /client folder, however I'm getting an error that says "Uncaught ReferenceError: Router is not defined "

I checked the error with chrome devtools and it pointed to "Router.configure(..." at the beginning of router.js which I've added below

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

Router.map( function () {
//the about route
this.route('about', {
    path: '/about',
    template: 'about',
    action: function () {
        console.log('now routing the about template');
    }
});

this.route('home', {
    path: '/',
    template: 'home',
    action: function () {
        console.log('now routing the home template');
    }
});

//the map route
this.route('map', {
    path: '/map',
    template: 'map',
    action: function () {
        console.log('now routing the map template');
    }

});
});

Does anyone know why I'm getting the error that Router is not defined?

like image 427
wcjohnson11 Avatar asked Jan 22 '14 23:01

wcjohnson11


2 Answers

Make sure your meteor version is 0.8.3 or up and use meteorite with command

mrt add iron-router

Others will cause iron router building errors.

Otherwise, check that your codes of router configure are in Meteor.isClient scope. If not, just wrap them in client scope.

if(Meteor.isClient){
  Router.configure({
   ......
  });

  Router.map(function(){
   ......
  });
}

If Iron-Router was installed below version 0.8.3, you should remove them from packages and smart.json, update meteor with command,

meteor update

and install iron router again with meteorite.
If no error messages show up, everything goes well

like image 90
Leon Lin Avatar answered Sep 19 '22 08:09

Leon Lin


I've had similar issues adding iron-router to Meteor 0.8.3.

This recipe seems to work for me.

  • Add iron router to smart.json (or create if new project):

{"packages": { "iron-router": {"version":"0.8.2"} }}

  • meteor update

At this point iron-router is in the packages folder but may not listed in .meteor/packages list. If not:

  • meteor add iron-router

Hope this is helpful

like image 45
shoggs Avatar answered Sep 17 '22 08:09

shoggs