我已经在我的应用程序中添加了铁路由器来处理主页,关于页面和应用程序主页面之间的路由
添加陨石铁路由器后, 我写了一个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');
}
});
});
有谁知道为什么我收到路由器未定义的错误?
答案 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。
这个食谱似乎对我有用。
{“packages”:{“iron-router”:{“version”:“0.8.2”}}}
此时,iron-router位于packages文件夹中,但可能未在.meteor / packages列表中列出。如果不是:
希望这是有帮助的
答案 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
可能已正确安装但未配置为使用。它发生在我身上,我用你的问题来理解我的问题。
实际上,我在package
和smart.json/lock
中提供了包,但它没有在文件.meteor/packages
中使用,并且在流星启动时未加载。所以它找不到它。只需添加包的名称即可修复它。