Meteor自定义包中的CoffeeScript命名空间导出
有几个小时,我无法让Meteor包导出CoffeeScript文件中定义的变量 例如,在Meteor自定义包中的CoffeeScript命名空间导出,coffeescript,meteor,Coffeescript,Meteor,有几个小时,我无法让Meteor包导出CoffeeScript文件中定义的变量 例如,在foo.coffee中,我尝试使用@foo={foo:1},foo={foo:1},exports.foo={foo:1}等等,但没有任何效果 最后,在看了流星之后,我放置了api.export()调用,它就工作了 知道为什么吗? 我的软件包设置如下: 目录 咖啡 package.js Package.description({ 摘要:“使用foobar生成foo的包” }); 软件包使用(函数(api){
foo.coffee
中,我尝试使用@foo={foo:1}
,foo={foo:1}
,exports.foo={foo:1}
等等,但没有任何效果
最后,在看了流星之后,我放置了api.export()在api.on_use()
调用该包之前进行code>调用,它就工作了
知道为什么吗?
我的软件包设置如下:
目录
咖啡
package.js
Package.description({
摘要:“使用foobar生成foo的包”
});
软件包使用(函数(api){
api.使用(“咖啡脚本”、“客户”);
export(“Foo”、“client”);//Coffeescript编译
@Foo =
FooBar: FooBar
到
您需要删除this.
在Foo
之前,查看一下,但这不是一个好主意,因为您可能需要在修改原始咖啡文件后编译它
这是我的窍门:
添加一个名为global_variables.js
的文件:
Foo = this.Foo;
然后将其添加到package.js中:
api.add_files('xxx', 'xxx', 'global_variables.js');
然后它就可以工作了!另一个简单明了的解决方案:
lib/namespace.coffee
Users = {} # This is a local variable
@Users = Users # Globalize your variable
package.js
api.addFiles('lib/namespace.coffee');
api.export('Users');
+1用于全局定义文件。我同意,我希望避免在编译后编辑coffeescript文件。我想知道是否有一种干净的方法可以使用monkeypatch Meteor的内置coffeescript
包…顺便说一句,我非常高兴使用api.export
调用在api.add\u文件之前声明变量(如我问题中所述)。我真的很好奇为什么这样做。我更喜欢将Foo=this.Foo;
添加到package.js的顶部
Foo = this.Foo;
api.add_files('xxx', 'xxx', 'global_variables.js');
Users = {} # This is a local variable
@Users = Users # Globalize your variable
api.addFiles('lib/namespace.coffee');
api.export('Users');