5

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

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

我试图将我的函数切换为 readableStream.pipe(),但我认为它的工作方式不同。

所以我有三个问题:

  1. 为什么不推荐使用 util.pump?
  2. 如何切换到 readableStream.pipe()?或 3. 如何关闭此警告?

这是我使用它的代码(带小胡子)

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

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

ReferenceError: readableStream is not defined

谁能帮我指出正确的方向?

4

3 回答 3

12

好的,所以经过更多实验(尽管文档为空),这个问题是一个非常简单的答案。

基本上, readableStream 只是一个你应该用你的流替换的变量。所以就我而言,答案是:

stream.pipe(res);

基本上,您只需将 util 替换为流。容易小便。

于 2013-05-05T04:56:45.200 回答
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
});
于 2015-02-23T11:05:32.870 回答
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);
于 2016-05-02T03:14:05.217 回答