根据 an answer to this question和 Meteor 文档,Meteor 将自动将所有脚本递归地包含在包文件夹结构中,最深的在前。但是,当我在 MyProject/sever 文件夹中的脚本中定义一个 js 类时,如果从顶级 .js 文件引用该类,则该类是未定义的。如果我将类定义移动到 if (Meteor.isServer)
上方的顶级 .js 文件,则类定义正确。我在构建或包含来自外部文件的 javascript 时缺少什么?
编辑: 这个问题比只看我的 js 类更基本。我无法在 meteor 0.6 创建的私有(private)命名空间中调用函数或查看任何内容。显然必须有一些方法来引用另一个文件中定义的东西,否则大型项目在 meteor 中是不可能的。
最佳答案
正如我所怀疑的,这与我对 javascript(愚蠢的 hack)类声明和全局变量的误解有关。改变:
function ClassFoo(){
this.bar = function(){}
}
到
ClassFoo = function ClassFoo(){
this.bar = function(){}
}
通过将 ClassFoo 设为全局来修复它。 FWIW,请注意 var ClassFoo = ...
将不起作用,因为它随后成为自动生成的闭包命名空间的本地。一定喜欢 javascript 的怪癖。
关于javascript - 使用其他脚本文件 Meteor 中的脚本文件的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173837/