Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否需要在iron的服务器代码中定义RouteController-router@1.0.0-pre3_Javascript_Meteor_Iron Router - Fatal编程技术网

Javascript 是否需要在iron的服务器代码中定义RouteController-router@1.0.0-pre3

Javascript 是否需要在iron的服务器代码中定义RouteController-router@1.0.0-pre3,javascript,meteor,iron-router,Javascript,Meteor,Iron Router,在尝试从Meteor 0.8.3和IR 0.8.2迁移到Meteor 0.9.3.1和IR 1.0.0-pre3时,我遇到了RouteController的问题 我在项目的“/tweet”文件夹中有以下js: Router.route('scene.index', { path: '/', controller: 'SceneController' }); 以及“/client”树中的SceneController js: SceneController = RouteCont

在尝试从Meteor 0.8.3和IR 0.8.2迁移到Meteor 0.9.3.1和IR 1.0.0-pre3时,我遇到了RouteController的问题

我在项目的“/tweet”文件夹中有以下js:

Router.route('scene.index', {
    path: '/',
    controller: 'SceneController'
});
以及“/client”树中的SceneController js:

SceneController = RouteController.extend({
    template: 'SceneView'
    ...
});
尝试从客户端访问路由时,出现以下错误:

Error: RouteController 'SceneController' is not defined.
    at resolve (packages/iron:router/lib/route.js:94)
    at Function.Route.findControllerConstructor (packages/iron:router/lib/route.js:116)
    at Function.Route.createController (packages/iron:router/lib/route.js:134)
    at Function.Router.createController (packages/iron:router/lib/router.js:181)
    at Function.Router.dispatch (packages/iron:router/lib/router_server.js:66)
    at Object.router (packages/iron:router/lib/router.js:15)
    at next (/Users/pward/.meteor/packages/webapp/.1.1.2.1m8ln9s++os+web.browser+web.cordova/npm/node_modules/connect/lib/proto.js:190:15)
    at Function.app.handle (/Users/pward/.meteor/packages/webapp/.1.1.2.1m8ln9s++os+web.browser+web.cordova/npm/node_modules/connect/lib/proto.js:198:3)
    at Object.fn [as handle] (/Users/pward/.meteor/packages/webapp/.1.1.2.1m8ln9s++os+web.browser+web.cordova/npm/node_modules/connect/lib/proto.js:74:14)
    at next (/Users/pward/.meteor/packages/webapp/.1.1.2.1m8ln9s++os+web.browser+web.cordova/npm/node_modules/connect/lib/proto.js:190:15)
在与node inspector相处了一段时间之后,我得出结论,IR需要客户端RouteController在服务器上可见


我的路由控制器目前设置了会话变量,我不想到处散布Meteor.isClient。这是一个IR错误还是一个已知的破坏性更改?

是的,我总是将我的router.js放在共享公共代码中,即任何未命名为server/或client/的文件夹中

我的路线控制器当前设置了会话变量,我更喜欢 不要把流星洒在周围。这是IR错误还是已知错误 零钱

你不需要用Meteor.isClient保护你的控制器代码,因为它只会在客户端执行,即使它是在共享文件夹中声明的

iron:router@1.0.0-pre3

Router.route('/', {
  name: 'scene.index',
  controller: 'SceneController'
});
名称/路径已切换其位置

编辑:

关于
iron:router
概念,请阅读以下内容:

必须在客户端和服务器上定义路由,才能确定需要执行的操作

客户端,如果检测到指向客户端路由的链接,则我们可以使用HTML5 pushState API导航到该链接;如果检测到服务器路由,则会发生标准HTTP通信(例如,我使用服务器路由在我的应用程序中提供可下载的资源),如果该链接对应于路由器的未知路径,然后会触发一个错误

服务器端,了解在未知路径上发送404的客户端路由非常重要,而不是为Meteor应用提供服务,以下是官方指南中对此的引用:

这还意味着在服务器上,如果没有定义客户端路由, 我们可以向客户端发送404响应,而不是加载 流星应用


感谢您的快速响应和对名称/路径交换的更正我将暂缓接受此答案,因为我仍然想知道这是一个bug还是一个突破性的更改。鉴于EventedMind的“em”脚手架工具创建了一个client/controllers文件夹,IR不支持它们似乎有点奇怪。编辑我的答案,长话短说,这是一个突破性的改变,不是一个bug。em脚手架工具可能有点落后于最新的
iron:router
?感谢您的澄清。我将接受这一点,但服务器应该已经知道客户端路由,因为我已经在服务器代码中定义了Router.route。在以前版本的IR中,它不需要定义实际的控制器,只需要定义路由