Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor自定义包中的CoffeeScript命名空间导出_Coffeescript_Meteor - Fatal编程技术网

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){

有几个小时,我无法让Meteor包导出CoffeeScript文件中定义的变量

例如,在
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');