【发布时间】:2023-03-24 21:17:01
【问题描述】:
我有以下代码:
const pt = require('prepend-transform').default;
const writable = pt('[test-process]').pipe(process.stdout);
writable 是目标流,它是 process.stdout,所以如果我写入可写,我只会得到标准输出,而不会在每一行前面加上 '[test-process]'。请注意,pt(x) 返回一个转换流。
另一方面,如果我这样做:
const pt = require('prepend-transform').default;
const transform = pt('[test-process]');
transform.pipe(process.stdout);
然后我写入转换流,似乎没有数据进入 process.stdout。
所以我需要使用读取流而不是转换流来执行此操作吗?
所以我尝试使用可读流而不是转换流:
const data = [];
const readable = new stream.Readable({
read: function (size) {
this.push(data.pop());
}
});
readable.pipe(pt('[test-process]')).pipe(process.stdout);
let log = function(){
Array.from(arguments).forEach(function(a){
data.push(a);
});
};
当我像这样使用可读时,什么都不会写入标准输出。
【问题讨论】:
-
在我尝试了
prepend-transform的example usage 但没有成功后,我决定将ol' poke 与console.log() 一起使用,并找到了一种使用方法:P 希望你能在我的答案中推断出工作代码。