2015-10-05 15 views
5

"www"以外のURLにリダイレクトするために私の "www" URLにアクセスする際に301リダイレクトを実装しようとしています。リダイレクトはlocalhost上で動作し、プロジェクトは正常に構築されます。 mupでデプロイしようとすると、次のエラーが表示されます。webapp.connecthandlersを使用すると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は削除するとうまく動作します。 このコードは、それがすべて何を意味するのでしょうか?

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() 
    } 
    }) 
} 

/lib/_reroute-non-www.js

に住んでいますか

+0

「ローカルホストのポート80への接続に失敗しました:接続が拒否されました」というエラーが表示されます。この問題は、サーバーでrootとして実行しない限り、ポート80を使用できないことがあります。ウィンドウズでは、残念なことにLinuxではなく、ポート80でOKを実行します。 – Molda

+0

これは 'WebApp.connectHandlers'コードを使用しているときにこの問題がなぜ起こるのかを実際には説明していません。 : – rkstar

+0

WebApp.connectHandlersはlocalhost:80に接続しようとしていますが、これは何をするべきでしょうか?connectHandlersのしくみを知らなくても助けがありません。 – Molda

答えて

0

この特定のコードがなぜmupがこのように「スローアップ」する原因が完全にはわかりませんが、私は関連性のあるその他の理由を見つけました。 (Wascally経由)のRabbitMQを使用している場合

、私の消費者・ハンドラは

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

を使用して登録する必要があります...とconsumeFn()の内側に、私は流星環境が利用できる必要はありません! Meteorはなく、私のアプリケーションで定義されているコレクションにはアクセスできません。

私ができることは、私がハンドラを登録したときに返された約束の私のthenハンドラにMeteor.bindEnvironmentを使用することです。 Meteor.bindEnvironmentを使用すると、私の流星アプリの中にあると思うすべてのものにアクセスできます。

Wascally.request(key, {content: 'my content'}) 
    .then(Meteor.bindEnvironment((result)=>{ 
    // now i have access to my Meteor environment and all collections 
    })) 
関連する問題