Iron Router BaseController 部署时未定义?
Iron Router BaseController undefined when deployed?
我的应用程序在本地运行良好,但是当我在 xxxx.meteor.com 上部署它时,我得到的是 Iron Router "Organize your Meteor application" 初始页面。此外,一旦浏览器点击第一个 Basecontroller.extend({
,我就会得到一个 ref。错误 "BaseController is not defined"。也许与特定于部署的路由控制器的加载顺序有关?这是我的代码:
client/main/routes.js
Router.route('/', {
name: 'splash',
controller: 'SplashController'
});
Router.route('/login', {
name: 'login',
controller: 'LoginController'
});
Router.route('/home', {
name: 'home',
controller: 'HomeController'
//...etc
client/main/controller.js
BaseController = RouteController.extend({
layoutTemplate: 'layout',
requiresAuth: false,
publicOnly: false,
// Called before anything happens
onBeforeAction: function () {
if (!Meteor.userId() && this.requiresAuth) {
return this.redirect('/login');
}
if (Meteor.userId() && this.publicOnly) {
return this.redirect('/home');
}
}
});
客户端/(所有模板)/controller.js
TemplateController = BaseController.extend({
requiresAuth: false,
publicOnly: true,
action: function () {
this.render('template', {
to: 'content'
});
}
});
问题仅在加载中。因此,应始终首先加载的代码,请尝试放在 <app-root>\lib
目录中。
像你的情况一样,将 route.js
和 controller.js
放在 lib
目录中。
阅读有关 meteor 加载顺序的更多信息 - http://docs.meteor.com/#/full/structuringyourapp
我的应用程序在本地运行良好,但是当我在 xxxx.meteor.com 上部署它时,我得到的是 Iron Router "Organize your Meteor application" 初始页面。此外,一旦浏览器点击第一个 Basecontroller.extend({
,我就会得到一个 ref。错误 "BaseController is not defined"。也许与特定于部署的路由控制器的加载顺序有关?这是我的代码:
client/main/routes.js
Router.route('/', {
name: 'splash',
controller: 'SplashController'
});
Router.route('/login', {
name: 'login',
controller: 'LoginController'
});
Router.route('/home', {
name: 'home',
controller: 'HomeController'
//...etc
client/main/controller.js
BaseController = RouteController.extend({
layoutTemplate: 'layout',
requiresAuth: false,
publicOnly: false,
// Called before anything happens
onBeforeAction: function () {
if (!Meteor.userId() && this.requiresAuth) {
return this.redirect('/login');
}
if (Meteor.userId() && this.publicOnly) {
return this.redirect('/home');
}
}
});
客户端/(所有模板)/controller.js
TemplateController = BaseController.extend({
requiresAuth: false,
publicOnly: true,
action: function () {
this.render('template', {
to: 'content'
});
}
});
问题仅在加载中。因此,应始终首先加载的代码,请尝试放在 <app-root>\lib
目录中。
像你的情况一样,将 route.js
和 controller.js
放在 lib
目录中。
阅读有关 meteor 加载顺序的更多信息 - http://docs.meteor.com/#/full/structuringyourapp