几个小时后,我无法获取Meteor软件包来导出CoffeeScript文件中定义的变量。
例如,在foo.coffee
中,我尝试使用@Foo = {foo: 1}
,Foo = {foo: 1}
,exports.Foo = {foo: 1}
等依此类推,但没有会工作。
最后,在查看了Meteor coffeescript test package on github之后,我在之前发出了api.export();
来电对该软件包的<{1}}调用并且它正常工作< / strong>即可。
我的包装设置如下:
api.on_use()
foo/
.meteor/
.build/
foo.coffee
package.js
class FooBar
constructor: ->
Foo =
FooBar: FooBar
答案 0 :(得分:10)
Coffeescript编译
@Foo =
FooBar: FooBar
到
(function() {
this.Foo = {
FooBar: FooBar
};
}).call(this);
您需要在this.
之前移除Foo
,看看namespace,但这不是一个好主意,因为您可能需要在修改原始咖啡文件后进行编译
这是我的诀窍:
添加名为global_variables.js
的文件:
Foo = this.Foo;
然后将其添加到package.js:
api.add_files('xxx', 'xxx', 'global_variables.js');
然后就行了!
答案 1 :(得分:1)
另一个平原&amp;简单的解决方案:
LIB / namespace.coffee
Users = {} # This is a local variable
@Users = Users # Globalize your variable
package.js
api.addFiles('lib/namespace.coffee');
api.export('Users');