0

Mu (Node.js Mustache エンジン) は、util.pump() を使用してそのストリームを HTTP 書き込みストリームに読み込む方法を文書化しています。しかし、util.pump() は推奨されなくなり、ストリーム オブジェクトの pipe() メソッドが使用されるようになりました。

したがって、これを行うための私のテストは次のとおりです。

var http = require('http');
var mu = require('mu2');

http.createServer(function(req, res) {
    mu.compileText("testname", "Hello world");
    var stream = mu.render("testname", {});
    stream.pipe(res);
    res.end();
}).listen(8888);

しかし、それは何も出力しません。util.pump() も試しましたが、これもうまくいきませんでした。

ただし、オンデータ イベントを mu::render() にアタッチし、この方法でデータを res に書き込むことができます。

MU ストリームを HTTP にパイプするときに何が間違っていますか?

ノード バージョン 0.10.5 と mu2@0.5.17 を使用しています。

4

1 に答える 1

0

解決策は、HTTP 応答ストリームを終了する前に MU ストリーム終了イベントを確認することです。

var http = require('http');
var mu = require('mu2');

http.createServer(function(req, res) {
    mu.compileText("testname", "Hello world");
    var stream = mu.render("testname", {});
    stream.pipe(res);

    // Here's the trick.
    stream.on('end', function() {
        res.end();
    });
}).listen(8888);
于 2013-05-08T07:57:13.987 に答える