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

Posted

技术标签:

【中文标题】使用 Iron Router,“未定义路由器”【英文标题】:Using Iron Router, "Router is not defined" 【发布时间】:2014-02-13 06:53:26 【问题描述】:

我在我的应用程序中添加了 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');
    

);
);

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

【问题讨论】:

我将 router.js 文件移动到 /lib 目录,以便它首先加载。这破坏了应用程序,所以我然后卸载并重新安装了带有陨石的铁路由器,路由现在可以在我的应用程序中运行。我希望这可以帮助陷入类似情况的人。 【参考方案1】:

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

mrt 添加铁路由器

其他会导致iron router搭建错误。

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

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

  Router.map(function()
   ......
  );

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

流星更新

然后用陨石重新安装铁路由器。 如果没有出现错误信息,则一切正常

【讨论】:

【参考方案2】:

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

这个食谱似乎对我有用。

将iron router添加到smart.json(或新建项目):

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

流星更新

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

流星添加铁路由器

希望对你有帮助

【讨论】:

【参考方案3】:

我知道您已解决此问题,但出于文档目的:

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

看 What are the best practices for structuring a large Meteor app with many html template files?

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于使用 Iron Router,“未定义路由器”的主要内容,如果未能解决你的问题,请参考以下文章

在 vuex 操作中调用时未定义路由器

如何使用 Iron 路由器提供静态内容(图像、字体等)

Iron-router中的中间件

在页面转换完成时暂停 Meteor 的 Iron Router 中的路由

如何使用 Meteor 模板助手编辑 Iron-Router 中作为参数传递的值?

Iron Router 部署时显示启动页面,在本地工作正常