以下代码架构最多可用于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但是这篇文章不是很有用。
谢谢!
答案 0 :(得分:0)
据我所知,client/
中的客户端代码在任何时候都没有被允许进入"请参阅" server/
目录中的代码,因为该目录仅加载在Meteor应用程序的服务器端。这也意味着lib/
中的代码无法查看server/
目录中的代码,如果在客户端调用lib/
代码。如果lib/
中的客户端代码依赖于server/
目录中的代码,则将该代码从server/
移动到lib/
或检查代码是否在服务器或客户端。您可以使用Meteor.isServer和Meteor.isClient来实现此目的。
您可能还想查看Meteor的Meteor load order和special directories来检查它是否仍然在Meteor版本1.0中执行的操作。