使用Iron Router,“路由器未定义”

时间:2014-01-22 23:14:22

标签: meteor iron-router

我已经在我的应用程序中添加了铁路由器来处理主页,关于页面和应用程序主页面之间的路由

添加陨石铁路由器后, 我写了一个router.js文件并将其放在我的/ client文件夹中,但是我收到的错误是“Uncaught ReferenceError:Router is not defined”

我用chrome devtools检查了错误,它指向我在下面添加的router.js开头的“Router.configure(...”)

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');
    }

});
});

有谁知道为什么我收到路由器未定义的错误?

4 个答案:

答案 0 :(得分:6)

确保您的流星版本 0.8.3 或以上并使用陨石命令

  

mrt添加铁路由器

其他会导致铁路由器构建错误。

否则,请检查您的路由器配置代码是否在Meteor.isClient范围内。 如果没有,只需将它们包装在客户端范围内。

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

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

如果Iron-Router安装在版本0.8.3以下,您应该从包和smart.json中删除它们, 用命令更新meteor,

  

流星更新

再次用陨石安装铁路由器 如果没有出现错误消息,一切顺利

答案 1 :(得分:2)

我有类似的问题将铁路由器添加到Meteor 0.8.3。

这个食谱似乎对我有用。

  • 将铁路由器添加到smart.json(或创建新项目):
  
    

{“packages”:{“iron-router”:{“version”:“0.8.2”}}}

  
  • meteor update

此时,iron-router位于packages文件夹中,但可能未在.meteor / packages列表中列出。如果不是:

  • meteor add iron-router

希望这是有帮助的

答案 2 :(得分:1)

我意识到你解决了这个问题,但出于文档目的:

将Iron Router放入lib /目录将允许客户端和服务器访问代码并首先加载。

请参阅 What are the best practices for structuring a large Meteor app with many HTML template files?

答案 3 :(得分:0)

iron-router可能已正确安装但未配置为使用。它发生在我身上,我用你的问题来理解我的问题。

实际上,我在packagesmart.json/lock中提供了包,但它没有在文件.meteor/packages中使用,并且在流星启动时未加载。所以它找不到它。只需添加包的名称即可修复它。