未找到流星服务器端路由

时间:2015-08-01 01:24:09

标签: meteor

我在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'},那么它就可以了。有什么建议我应该寻找什么?

2 个答案:

答案 0 :(得分:2)

胡安的答案并没有错,但是他并没有遵循惯例,他也没有解释为什么你做错了。

<强> TL; DR;在lib/routes.js内定义您的路线。

服务器端路由是您在客户端上提供内容加载流星的路由。在您的示例中,您只需提供一段文本。 client/内的代码在客户端执行。这意味着,在加载流星之后,在客户端上运行。因此,当定义了服务器端路由时,meteor已经被加载。

铁路由器有点同构。这意味着,客户端和服务器上都可以使用相同的API。因此Iron假定路由是在公共代码中定义的(例如,在lib/内)。当您将选项where设置为server时,当代码在客户端运行时,iron将忽略该路由。当代码在服务器面团上运行时,iron会安装所谓的connectHandlers。它使用WebApp.connectHandlers.use API。这些处理程序可以绕过流星核心的服务。

当您未加载meteor核心时,不执行客户端代码,并且仅在服务器上执行共享代码。

答案 1 :(得分:1)

根据您的评论:

将routes.js文件更改为公共目录

app/lib/routes.js

您可以在Oficial Documentation

中详细了解如何构建应用程序