2016-09-13 1 views
0

Следующая архитектура кода работает до Meteor 1.0, но разбивается на Meteor 1.2 Любые идеи/предложения оценены. Примечание: Я использую meteor update --release 1.2 как мой метод для ugprade.Модернизация Meteor v1.0 до v1.2: сервер не распознается в соответствии с методами Meteor под/lib

в 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 он работает на сервере в Метеор версии 1.0, о чем свидетельствует журналы, напечатанные из этой функции под номером Meteor.isServer. Это не относится к версии 1.2. Под 1.2, Meteor.isServer никогда не является истинным, и его журнал не печатает.

Кто-нибудь видел что-нибудь подобное?

EDIT: ближайшая проблема, которую я смог найти на этом месте: https://github.com/meteor/meteor/issues/5113, но это сообщение не очень полезно.

Спасибо!

ответ

0

Насколько я могу судить, код на стороне клиента в client/ ни в коем случае не разрешал «видеть» код в каталоге server/, потому что этот каталог загружается только на стороне сервера приложения Meteor. Это также означает, что код в lib/не может см. Код в каталоге server/, , если код lib/ вызывается на стороне клиента. Если у вас есть код клиента в lib/, который зависит от кода из каталога server/, то либо переместите этот код от server/ до lib/, либо проверьте, выполняется ли код на сервере или клиенте. Вы можете использовать Meteor.isServer и Meteor.isClient для этой цели.

Вы также можете посмотреть Meteor load order и special directories Meteor, чтобы проверить, что он все еще делает то, что он делал в версии 1.0 Meteor.

+0

Striezel, см. Мой отредактированный вопрос. Я был неясно, по какой именно проблеме я видел, но, надеюсь, сейчас. Кроме того, благодарю вас за помощь. –