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没有任何问题。
答案 0 :(得分: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
答案 1 :(得分:0)
您是否在某处使用中间件或服务器端路由?如果是这样,中间件的所有path
参数都必须以/
开头,因此将some/path
更改为/some/path
。它在最近的一个版本中开始变得很重要。
ROOT_URL
不一定以/
结尾 - 你的是正确的。
答案 2 :(得分:0)
这是我正在做的支持命名空间路由(使用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
});