0

我对 Meteor 0.6.6.2 有疑问

当我在生产中部署时。我必须遵循错误:

/home/gt/webapps/meteor/bundle/programs/server/boot.js:185
}).run();
   ^
Error: a route URL prefix must begin with a slash
    at _.extend.declare (packages/routepolicy/routepolicy.js:95)
    at new StreamServer (packages/livedata/stream_server.js:23)
    at new Server (packages/livedata/livedata_server.js:980)
    at Package (packages/livedata/server_convenience.js:10)
    at packages/livedata.js:3909:4
    at packages/livedata.js:3920:3
    at /home/gt/webapps/meteor/bundle/programs/server/boot.js:154:10
    at Array.forEach (native)
    at Function._.each._.forEach (/home/gt/webapps/meteor/bundle/programs/server/node_modules/underscore/underscore.js:79:11)
    at /home/gt/webapps/meteor/bundle/programs/server/boot.js:81:5

我的 root_url 设置为:

导出 ROOT_URL=' http ://sub.mydomain.com '

我对旧版本的 Meteor 没有问题。

4

3 回答 3

2

我发现了错误。我调试了 routepolicy.js 中的路径(在 /bundle/programs/server/app 第 56 行,带有 console.info(urlPrefix) ),发现我的导出 ROOT_URL 不正确。出于某种原因,我的导出命令(导出 ROOT_URL=' http ://mydomain.com ' 没有成功,它仍然是 ROOT_URL='mydomain.com')

请参阅:Github 问题:https ://github.com/meteor/meteor/issues/1404

于 2013-10-30T19:54:29.087 回答
1

这是我为支持命名空间路由所做的工作(使用 Iron Router):

lib/namespace.js包含:

Router._mapOld = Router.map;

Router.map = function(namespace, cb) {
    if (_.isFunction(namespace)) {
        cb = namespace;
        return Router._mapOld.call(this, cb);
    }

    namespace = namespace.replace(/\/+$/, '');

    var that       = this;
    that._routeOld = that.route;
    that.route     = function(name, options) {
        if (!_.isString(options.path)) {
            throw new Error(
                'Namespaced routes must have a path specified as a string.');
        }
        return that._routeOld.call(that, name, _.extend(options, {
            path : namespace + options.path
        }));
    };

    var ret = Router._mapOld.call(that, cb);

    that.route = that._routeOld;

    return ret;
};

然后你可以这样做:

Router.map(function() {
    // Add routes normally with no prefix
});

Router.map('/prefix', function() {
    // All routes you add here will be prefixed with /prefix
});
于 2013-12-17T04:00:57.370 回答
0

您是否在某处使用中间件或服务器端路由?如果是这样,path中间件的所有参数必须以 a 开头/,因此更改some/path/some/path. 它在最近的一个版本中开始变得重要。

ROOT_URL顺便说一句,不必以 结尾/- 你的是正确的。

于 2013-10-29T14:20:55.910 回答