替换Node.js中的util.pump()

时间:2013-05-05 04:38:51

标签: javascript node.js mustache

我最近从0.8~更新到最新版本的Node.js(1.10~),我在运行时收到一条消息说:

   util.pump() is deprecated. Use readableStream.pipe() instead.

我试图将我的函数切换为readsStream.pipe(),但我认为它的工作原理并不相同。

所以我有三个问题:

  1. 为什么不推荐使用util.pump?
  2. 如何切换到readableStream.pipe()? 或3.如何关闭此警告?
  3. 以下是我正在使用它的代码(带胡子)

       var stream = mu.compileAndRender(template_file, json_object_from_db);
           util.pump(stream, res);
    

    当我用readableStream.pipe替换util.pump时,我收到此错误:

    ReferenceError: readableStream is not defined
    

    任何人都可以帮我指出正确的方向吗?

3 个答案:

答案 0 :(得分:11)

好的,所以经过一些实验后这个问题很简单(尽管文档是空的)。

基本上,readableStream只是一个你应该用你的流替换的变量。所以在我的情况下,答案是:

stream.pipe(res);

你只需要用流替换util。容易发脾气。

答案 1 :(得分:2)

我认为以下链接对您的工作有所帮助! https://groups.google.com/forum/#!msg/nodejs/YWQ1sRoXOdI/3vDqoTazbQQJ


var readS = fs.createReadStream("fileA.txt");
var writeS = fs.createWriteStream("fileB.txt");
util.pump(readS, writeS, function(error)
   // Operation done
}); 

=====>

var readS = fs.createReadStream("fileA.txt");
var writeS = fs.createWriteStream("fileB.txt");
readS.pipe(writeS);

readS.on("end", function() {
   // Operation done
});

答案 2 :(得分:1)

您可以查看此链接http://nodejs.cn/api/stream.html
每当在可读流上调用stream.pipe()方法时,就会发出这种情况,并将此可写函数添加到其目标集。

var writer = getWritableStreamSomehow();
var reader = getReadableStreamSomehow();
writer.on('pipe', (src) => {
console.error('something is piping into the writer');
assert.equal(src, reader);
});
reader.pipe(writer);