ошибки развертывания mup при использовании webapp.connecthandlers

я пытаюсь реализовать перенаправление 301 при посещении моего URL-адреса «www», чтобы перенаправить на «не-www». перенаправление работает на локальном хосте, и проект отлично строится. когда я пытаюсь развернуть с mup, я получаю эту ошибку:

x Invoking deployment process: FAILED

    -----------------------------------STDERR-----------------------------------
    :callback’ will be initialized after [-Wreorder]
           v8::Handle<v8::Function> callback;
                                    ^
    ../src/heap_output_stream.h:26:29: warning:   ‘v8::Handle<v8::Value> nodex::OutputStreamAdapter::abort’ [-Wreorder]
           v8::Handle<v8::Value> abort;
                                 ^
    ../src/heap_output_stream.h:11:7: warning:   when initialized here [-Wreorder]
           OutputStreamAdapter(
           ^
    gyp info ok 
    npm WARN package.json [email protected] No description
    npm WARN package.json [email protected] No repository field.
    npm WARN package.json [email protected] No README data
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (7) Failed to connect to localhost port 80: Connection refused
    Latest deployment failed! Reverted back to the previous version.

вот код нарушения. mup работает нормально, когда я его удаляю. этот код живет в /lib/_reroute-non-www.js

if( Meteor.isServer ){
  WebApp.connectHandlers.use(function(req, res, next){
    if( req.headers.host == 'www.example.com' ){
      res.writeHead(301, {
        Location: 'https://example.com'
      })
      res.end()
    } else {
      next()
    }
  })
}

Что все это значит?


person rkstar    schedule 05.10.2015    source источник
comment
Ошибка говорит о том, что не удалось подключиться к порту 80 локального хоста: в соединении отказано. Проблема может заключаться в том, что на вашем сервере он не может использовать порт 80, если вы не запустите его как root. В Windows он работает нормально на порту 80, к сожалению, не в Linux.   -  person Molda    schedule 05.10.2015
comment
это на самом деле не объясняет, почему эта проблема возникает только при использовании кода WebApp.connectHandlers. :(   -  person rkstar    schedule 05.10.2015
comment
Итак, WebApp.connectHandlers пытается подключиться к localhost:80. Это то, что он должен делать? Трудно помочь, не зная, что делает connectHandlers.   -  person Molda    schedule 05.10.2015
comment
WebApp.connectHandlers — это способ подключения к промежуточному программному обеспечению веб-сервера в node.js внутри приложения метеора docs .meteor.com/#/полный/веб-приложение   -  person rkstar    schedule 06.10.2015


Ответы (1)


Хотя я не совсем уверен, почему этот конкретный набор кода вызывает mup такое «вырывание», я нашел другие причины, которые могут быть связаны.

При использовании RabbitMQ (через Wascally) мои обработчики потребителей должны быть зарегистрированы с помощью

Fiber(()=>{
  rabbit.handle(key, consumerFn)
}).run()

... и внутри consumeFn() у меня НЕТ доступной среды Meteor! Meteor нет, и у меня нет доступа ни к каким коллекциям, которые могли быть определены в моем приложении.

Что я смог сделать, так это использовать Meteor.bindEnvironment в моем обработчике then обещания, которое было возвращено, когда я зарегистрировал обработчик. Использование Meteor.bindEnvironment дает мне доступ ко всем тем вещам, которые я ожидаю иметь в своем приложении Meteor.

Wascally.request(key, {content: 'my content'})
  .then(Meteor.bindEnvironment((result)=>{
    // now i have access to my Meteor environment and all collections
  }))
person rkstar    schedule 13.10.2015