要求

2013-04-09 16 views
6

私は、コードのこの部分を持っている:要求

var app = require('http').createServer(function(req, res){ 
    console.log(req); 
    req.addListener('end', function() { 
     fileServer.serve(req, res); 

    }); 
}); 

var statics = require('node-static'); 
var fileServer = new statics.Server('./'); 

app.listen(1344, '127.0.0.1'); 

app.on('error', function(err){ 
    console.log(err); 
}) 

私は変更のカップルを作っまでそれが、うまく働いていた、ノードはエラーを与え、とき私は戻ってきました、そのエラーはもう存在しませんでしたが、endイベントが発生しないうちに働いていたような仕事の代わりに。だから、req.addListener('end', function(){});内のものは呼び出されません。

同じイベントを使用する別のnode.jsを実行しても、どちらも起動されていません。リクエストの終了イベントが壊れている場合も同様です。しかし、どうすればそれが可能になりますか?

初めてのことではありません。最後に、私はノードを再インストールすることになりました(さまざまなことを試した後)。私は解決策を見つけることを好むので、私は問題を理解することができます!

注:元のコードにはsocket.ioとその他の種類の接続が含まれていますが、アプリが立ち往生したときにコードの一部を貼り付けただけです。

問題をデバッグする方法を知ることも有益です。

+0

ノードv0.8.x' 'としてみてくださいまたはhttp://nodejs.org私はfileServer.serve'作品'かどうかに話すことができない – InspiredJW

+0

にSTREAM2 Documenationを読んで、しかし、もしあなたは 'node-static'に関連するすべてを取り出します。あなたのコードはそのまま動作し、' end'イベントが確実に呼び出されます。私は 'node-static'を使って試したときに問題が発生したことを覚えています。本当にあなたの問題であれば、Connectからの静的ミドルウェアを使うほうが良いでしょう。 http://www.senchalabs.org/connect/static.html –

+0

@InspiredJW私はv0.10.3です。私はダウングレードすべきだと言っていますか? – limoragni

答えて

13

@InspiredJWはこれを忘れていたので、これを指摘してもらえるはずですが、間違いなくあなたの問題は読み込み可能なストリームの変更によるものです。 endイベントを呼び出すには、dataイベントにリスナーを接続するか、stream.resume()に電話する必要があります。

require('http').createServer(function(req, res){ 
    req.addListener('end', function() { 
     // won't ever get called in node v0.10.3 
    }); 
}); 

require('http').createServer(function(req, res){ 
    req.addListener('end', function() { 
     // will get called in node v0.10.3 because we called req.resume() 
    }); 
    req.resume(); 
}); 

require('http').createServer(function(req, res){ 
    req.on('data', function (chunk) { }); 

    req.addListener('end', function() { 
     // also will get called because we attached a data event listener 
    }); 
}); 

http://nodejs.org/api/stream.html#stream_compatibility

+0

今働いている。私が理解できないことは、どのように最初に働いたのですか?私はnode.jsを初めて使っています。私は、物事を働かせるためにたくさんのことを読む必要があります。あなたはノードについての良い本を知っていますか?私はApressが1つに取り組んでいることを知っていますが、私はすぐに1つを持っていることを好みます。ありがとう! – limoragni

+0

私は、申し訳ありません。私はちょうどそれを使用してノードを学んだ。以前は、 '' data''イベントリスナーが接続されていたか、古いバージョンのノードを使っていたかのどちらかが原因で、おそらく動作していました。 –

+0

@limoragniおそらくnodeをv0.10.3以上にアップグレードしたので、それが動作を停止させた原因です。 – Chev