【问题标题】:Global variables not being attached to the `global` object on MeteorJS packages全局变量未附加到 MeteorJS 包上的“全局”对象
【发布时间】:2015-07-20 21:13:19
【问题描述】:

我正在编写一个 Meteor 包,我发现全局变量没有附加到 global 对象,在 Meteor 包上(在普通 Meteor 项目中不会发生这种情况)。要重现,请在 Meteor 包上写下以下内容:

x = 1
global.x = 2

console.log(x)        // 1
console.log(global.x) // 2

我期望的行为是 xglobal.x 具有相同的值 (2)。

这在 Meteor 包上是否预期? Node 的 gloabal 对象是否有特殊的包装器?

谢谢!

David Weldon 回复后编辑:

上下文:我正在尝试关注https://github.com/feross/standard,因此我将删除my_variable 样式上的所有全局变量声明,并改用global.my_variable。我无法使用api.export 导出存储在global 上的变量,因为api.export('global.my_variable', ...) 不起作用。

【问题讨论】:

    标签: javascript node.js meteor


    【解决方案1】:

    包被包裹在一个闭包中以防止全局泄漏。要在包外公开符号,请在 package.js 中使用 api.export

    【讨论】:

    • 感谢您的回复大卫,因为您的回复我已经更新了我的问题以表明我无法使用api.export 导出我的全局变量。请检查。
    • 那么你需要忽略这种情况下的标准文档。 export 尝试从包级全局变量中创建应用程序级全局变量。通过将您的变量声明为global.,您正在绕过这个过程。只需将var 放在您需要使用api.export 的变量上 - 这就是所有流星包的编写方式。