将Meteor v1.0升级到v1.2:在/ lib下的Meteor方法下无法识别服务器

时间:2016-09-13 19:00:26

标签: meteor coffeescript client-server

以下代码架构最多可用于Meteor 1.0但在Meteor 1.2中断 任何见解/建议表示赞赏。 注意:我使用meteor update --release 1.2作为ugprade的方法。

server/file1.coffee中的

class ClassA
    {code for the class} 
@MyObj = new ClassA()
/lib/collections/file2.coffee中的

Meteor.methods 
   myFunction : ->
      if Meteor.isServer
          console.log 'isServer'
      if MyObj?
        {do stuff}

请注意,虽然myFunction/lib目录中定义并且从/client调用,但它在Meteor版本1.0中的服务器上运行,正如从内部打印的日志所证明的那样Meteor.isServer下的功能。版本1.2中的情况并非如此。在1.2下,Meteor.isServer永远不会出现,并且日志不会打印。

有没有人见过这样的问题?

编辑:我在这个地方找到的最接近的问题是:https://github.com/meteor/meteor/issues/5113但是这篇文章不是很有用。

谢谢!

1 个答案:

答案 0 :(得分:0)

据我所知,client/中的客户端代码在任何时候都没有被允许进入"请参阅" server/目录中的代码,因为该目录仅加载在Meteor应用程序的服务器端。这也意味着lib/ 中的代码无法查看server/目录中的代码,如果在客户端调用lib/代码。如果lib/中的客户端代码依赖于server/目录中的代码,则将该代码从server/移动到lib/或检查代码是否在服务器或客户端。您可以使用Meteor.isServerMeteor.isClient来实现此目的。

您可能还想查看Meteor的Meteor load orderspecial directories来检查它是否仍然在Meteor版本1.0中执行的操作。