Javascript 从meteor主应用程序包中访问对象

Javascript 从meteor主应用程序包中访问对象,javascript,node.js,meteor,package,meteorite,Javascript,Node.js,Meteor,Package,Meteorite,所以我现在正在开发一个基于几个不同软件包的meteor应用程序 我的主应用程序中有一个对象,我使用它作为包的一种API。此对象如下所示(在主应用程序的lib/helpers/api.coffee中): 如果我在Mainapp或控制台中访问此对象,则一切正常。 但是,如果我试图访问应用程序包中的该对象,我会得到一个“Mainapp not defined”错误 是否有办法在主应用程序和包之间共享此对象。我知道我可以用session.set和session.get做一些事情,但我认为最好有一个中心对

所以我现在正在开发一个基于几个不同软件包的meteor应用程序

我的主应用程序中有一个对象,我使用它作为包的一种API。此对象如下所示(在主应用程序的lib/helpers/api.coffee中):

如果我在Mainapp或控制台中访问此对象,则一切正常。 但是,如果我试图访问应用程序包中的该对象,我会得到一个“Mainapp not defined”错误

是否有办法在主应用程序和包之间共享此对象。我知道我可以用session.set和session.get做一些事情,但我认为最好有一个中心对象,作为我的包的一种API

还有Meteor.userId()和Meteor.user(),它们对Meteor核心系统执行类似的操作(这些函数也可以在包中获得)。他们如何在Meteor主应用程序和软件包中实现此功能


提前谢谢

使Mainapp全球可访问。因此,您的示例生成的javascript应该是:

var constructor = function () {
}
constructor.prototype.getCurrentUser= function () {.....
.... DEFINE YOUR METHODS ....

Mainapp = new constructor();

Meteor对前面没有var的变量施展了魔法,使它们可以全局访问。

我终于发现了问题所在

对象变量需要全局可用(正如marcodejongh正确指出的)

我犯的错误是,我直接在文件中调用了封装在对象中的功能(在文件加载时没有函数或任何其他-->功能)

解决我的问题的方法是使用函数中的功能,例如函数

# inside an iron-router routes
Router.map ->
  @route 'index',
  controller: IndexController
  path: '/index'
  onAfterAction: ->
    Mainapp.setTitle 'Test'

Meteor首先构建您的所有包。此时无法访问Mainapp对象。构建包并将其嵌入Mainapp后,该功能可用。

非常感谢您的回答!你说得对。变量需要是全局可访问的。我发现我用错误的方式调用了对象。下面我的回答更详细地说明了我做错了什么。
Mainapp.getCurrentUserId()
# inside an iron-router routes
Router.map ->
  @route 'index',
  controller: IndexController
  path: '/index'
  onAfterAction: ->
    Mainapp.setTitle 'Test'