7

我在我的应用程序中添加了 Iron-router 来处理主页、关于页面和应用程序主页(即地图)之间的路由

在使用陨石添加 Iron-router 后,我编写了一个 router.js 文件并将其放在我的 /client 文件夹中,但是我收到一条错误消息,显示“未捕获的 ReferenceError:路由器未定义”

我用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

4 回答 4

6

确保您的流星版本是0.8.3或更高版本,并通过命令使用流星

mrt add iron-router

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

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

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

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

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

流星更新

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

于 2014-08-07T20:35:46.303 回答
2

我在 Meteor 0.8.3 中添加了 Iron-router 时遇到了类似的问题。

这个食谱似乎对我有用。

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

{“包”:{“铁路由器”:{“版本”:“0.8.2”}}}

  • 流星更新

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

  • 流星添加铁路由器

希望这会有所帮助

于 2014-08-21T09:41:40.913 回答
1

我意识到您已解决此问题,但出于文档目的:

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

请参阅 使用许多 HTML 模板文件构建大型 Meteor 应用程序的最佳实践是什么?

于 2014-02-13T20:49:59.350 回答
0

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

实际上,我在里面和里面都有这个包,packagesmart.json/lock它没有在文件中使用.meteor/packages,也没有在流星启动时加载。所以它找不到它。只需添加包的名称即可修复它。

于 2014-07-20T19:31:27.033 回答