【问题标题】:Upgrading Meteor v1.0 to v1.2: server not recognized under Meteor methods under /lib将 Meteor v1.0 升级到 v1.2:在 /lib 下的 Meteor 方法下无法识别服务器
【发布时间】:2017-01-21 11:29:24
【问题描述】:

以下代码架构在 Meteor 1.0 中有效,但在 Meteor 1.2 中会中断 任何见解/建议表示赞赏。 注意:我使用meteor update --release 1.2 作为升级的方法。

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 但这篇文章不是很有帮助。

谢谢!

【问题讨论】:

    标签: meteor coffeescript client-server


    【解决方案1】:

    据我所知,client/ 中的客户端代码在任何时候都不允许“查看”server/ 目录中的代码,因为该目录仅在 Meteor 应用程序的服务器端加载。这也意味着lib/ 中的代码不能看到server/目录中的代码,如果在客户端调用lib/ 代码。如果lib/ 中有依赖于server/ 目录中的代码的客户端代码,则将该代码从server/ 移动到lib/ 或检查该代码是在服务器上执行还是在客户端上执行。为此,您可以使用Meteor.isServerMeteor.isClient

    您可能还想查看 Meteor 的 Meteor load orderspecial directories,以检查它是否仍在执行其在 Meteor 1.0 版中所做的工作。

    【讨论】:

    • Striezel,请查看我编辑的问题。我以前不清楚我看到的确切问题,但希望现在是这样。另外,感谢您迄今为止的帮助。
    猜你喜欢
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多