我在OS X 10.6.8上运行Meteor 1.1.0.2,今天早些时候,我通过meteor add iron:router
安装了IronRouter,所以我应该有最新版本。
我的路线文件中有这个:
Router.route('/create_profile',
function () {
var req = this.request;
var res = this.response;
res.end('hello from the server\n');
}
, {where: 'server'}
);
当我点击此网址时:
http://localhost:3000/create_profile
我收到一条浏览器消息说:
糟糕,看起来客户端或服务器上没有路由的网址:“http://localhost:3000/create_profile。”
如果我删除了, {where: 'server'}
,那么它就可以了。有什么建议我应该寻找什么?
答案 0 :(得分:2)
胡安的答案并没有错,但是他并没有遵循惯例,他也没有解释为什么你做错了。
<强> TL; DR;在lib/routes.js
内定义您的路线。
服务器端路由是您在客户端上提供内容加载流星的路由。在您的示例中,您只需提供一段文本。 client/
内的代码在客户端执行。这意味着,在加载流星之后,仅在客户端上运行。因此,当定义了服务器端路由时,meteor已经被加载。
铁路由器有点同构。这意味着,客户端和服务器上都可以使用相同的API。因此Iron假定路由是在公共代码中定义的(例如,在lib/
内)。当您将选项where
设置为server
时,当代码在客户端运行时,iron将忽略该路由。当代码在服务器面团上运行时,iron会安装所谓的connectHandlers
。它使用WebApp.connectHandlers.use
API。这些处理程序可以绕过流星核心的服务。
当您未加载meteor核心时,不执行客户端代码,并且仅在服务器上执行共享代码。
答案 1 :(得分:1)