Coffeescript 流星全球';这';似乎没有定义

Coffeescript 流星全球';这';似乎没有定义,coffeescript,meteor,Coffeescript,Meteor,我正试图在Meteor项目中找出我越来越大的单个CoffeeScript文件,并使用this跟踪了作用域全局变量。然而,即使是一些简单的事情,比如: console.log("this=" + this) @gave = Transactions: new Meteor.Collection("Transactions") Causes: new Meteor.Collection("Causes") 生成终端错误,服务器无法启动: => Meteor server restar

我正试图在Meteor项目中找出我越来越大的单个CoffeeScript文件,并使用
this
跟踪了作用域全局变量。然而,即使是一些简单的事情,比如:

console.log("this=" + this)
@gave =
  Transactions: new Meteor.Collection("Transactions")
  Causes: new Meteor.Collection("Causes")
生成终端错误,服务器无法启动:

=> Meteor server restarted
this=undefined

/home/g/workspace/gave/.meteor/local/build/server/server.js:321
}).run();
 ^
TypeError: Cannot set property 'gave' of undefined
    at app/gave.coffee.js:6:11
根据上面的建议

全局变量可以通过使用它(或CoffeeScript的@shorthand)在CoffeeScript中设置,因为在顶层,它指的是全局名称空间(客户端上的窗口和服务器上的全局)

所以,我真的不知道我错在哪里。你能吗?:)

注意:thisArg值是作为this参数传递的,无需修改 价值这是对第3版的更改,其中未定义或空 thisArg将替换为全局对象,ToObject将应用于 所有其他值以及该结果将作为this值传递


因此,有了
“使用严格的”
,meteor的
.call(null)
将有效地为您提供
this==null
=)。

好的,它现在似乎正在工作。我随机尝试删除文件顶部的“use strict”行。有人知道为什么会有不同吗?我提交了一个补丁。它已被接受并合并到Meteor“devel”分支中,因此可能会出现在下一版本中。是的我刚刚读了一封0.6.2的电子邮件,上面列出的最后一个更改是“*您现在可以在使用
use strict
时在CoffeeScript文件中设置全局变量”,所以Meteor不兼容就是与use strict完全不兼容?看起来很不幸。