【发布时间】:2013-12-22 04:44:41
【问题描述】:
由于this question而用Meteor做实验,得出以下结论:
在共享目录(客户端/服务器)中定义,这将引发引用错误:
if(Meteor.isServer) {
// could depend on server logic, this is not Meteor.isServer!
serverVar = true;
}
Meteor.methods({
myMethod: function() {
if(serverVar) {
return "secret";
} else {
throw Error();
}
}
}
然后,在客户端:
Meteor.call("myMethod", function(err, res) {
console.log(res);
}
导致:ReferenceError: serverVar
但是这段代码,只在服务器端定义,运行完美:
// could depend on server logic, this is not Meteor.isServer!
serverVar = true;
Meteor.methods({
myMethod: function() {
if(serverVar) {
return "secret";
} else {
throw Error();
}
}
}
请注意,我只切换到服务器端目录而不是共享目录,并删除了 if 子句。
我认为这两种方法应该是等效的,忽略了代码可见的事实
仅受Meteor.isServer限制时在客户端上。
这使我得出这样的结论:Meteor 使用第一种方法时,会尝试在客户端上运行代码,而无需明确限制在服务器上。真的吗?!还有什么解释?
【问题讨论】:
标签: javascript meteor