0

読み取り可能なストリームを http 応答に出力する際に​​問題があります。

舞台裏では、一般的な http createServer からの定期的な要求と応答のストリームがあります。「req.url」が css で終わっているかどうかを確認し、このファイルの読み取り可能なストリームを作成します。console.log に css の内容が表示され、期待どおりの正しい css コードが含まれています。次に、読み取り可能な css ファイル ストリームを応答にパイプしようとしましたが、Chrome で応答を検査するとファイル応答が空白になります。しかし、それは200の応答です。一見して何か考えはありますか?コードをコメントアウトした場所のさまざまなバリエーションを試しました。

router.addRoute("[a-aA-z0-9]{1,50}.css$", function(matches){
    var cssFile = matches[0];
    var pathToCss = process.cwd() + "/" +  cssFile;
    // takes care of os diffs regarding path delimiters and such
    pathToCss = path.normalize(pathToCss);
    console.log(matches);
    console.log("PATH TO CSS");
    console.log(pathToCss)
    var readable = fs.createReadStream(pathToCss);

    var write = function(chunk){
        this.queue(chunk.toString());
        console.log(chunk.toString());
    }
    var end = function(){
        this.queue(null);
    }
    var thru = through(write,end);
    //req.on("end",function(){
        res.pipe(readable.pipe(thru)).pipe(res);
        //res.end();
    //});


});
4

2 に答える 2

1

読み取り可能なストリームをスルー ストリームにパイプしてから、それを応答にパイプする必要があります。

readable.pipe(thru).pipe(res);

編集: CSS パスを準備するには、パスを連結して正規化する代わりに、path.joinを使用します。

var pathToCss = path.join(process.cwd(), cssFile);
于 2014-05-02T20:31:49.763 に答える