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() 但这也不起作用。

但是,我能够将 on-data 事件附加到 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 回答