使用webapp.connecthandlers时mup部署错误

rks*_*tar 5 javascript node.js meteor meteor-up

我正在尝试在访问我的"www"网址时实施301重定向,以重新路由到"非www".重定向适用于localhost,项目构建正常.当我尝试使用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 meteor-dev-bundle@0.0.0 No description
    npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
    npm WARN package.json meteor-dev-bundle@0.0.0 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.
Run Code Online (Sandbox Code Playgroud)

这是有问题的代码.当我删除它时,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()
    }
  })
}
Run Code Online (Sandbox Code Playgroud)

这是什么意思呢?

rks*_*tar 0

虽然我不完全确定为什么这组特定的代码会导致mup像这样“呕吐”,但我确实找到了可能相关的其他原因。

使用 RabbitMQ (通过Wascally)时,我的消费者处理程序必须使用以下方式注册

Fiber(()=>{
  rabbit.handle(key, consumerFn)
}).run()
Run Code Online (Sandbox Code Playgroud)

...并且在里面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
  }))
Run Code Online (Sandbox Code Playgroud)