2

根据对这个问题的回答和 Meteor 文档,Meteor 将自动将所有脚本包含在一个包文件夹结构中,并以最深的顺序递归。但是,当我在 MyProject/sever 文件夹中的脚本中定义 js 类时,如果从顶级 .js 文件引用该类是未定义的。如果我将类定义移动到上面的顶级 .js 文件,if (Meteor.isServer)则该类定义正确。我在从外部文件构建或包含我的 javascript 时缺少什么?

编辑: 这个问题比仅仅看到我的 js 类更根本。我不能调用一个函数,也不能在流星 0.6 创建的私有命名空间中看到任何东西。显然,必须有某种方式来引用另一个文件中定义的东西,否则在流星中不可能有大型项目。

4

1 回答 1

2

正如我所怀疑的,这与我对 javascript (goofy hack) 类声明和全局变量的误解有关。改变:

function ClassFoo(){
   this.bar = function(){}
}

ClassFoo = function ClassFoo(){
   this.bar = function(){}
}

通过使 ClassFoo 全局化来修复它。FWIW,请注意这var ClassFoo = ...将不起作用,因为它随后成为自动生成的闭包命名空间的本地。一定要喜欢 javascript 的怪癖。

于 2013-06-19T18:02:00.050 回答