【发布时间】:2017-11-07 10:23:23
【问题描述】:
我有一个函数,它需要一个写入流,我要向它提供以下流:
const logStream = fs.createWriteStream('./log.txt')
fn(logStream)
fn是第三方模块提供的,所以我不控制它的实现。在内部,我知道fn 最终会这样做:
// super simplified
fn (logStream) {
// ...
stream.pipe(logStream, { end: true })
// ...
}
我的问题是我知道读取流stream 包含我不想输出到我的log.txt 的ANSI 转义码。在谷歌快速搜索后,我找到了chalk/strip-ansi-stream,这是一个专门为此而设计的转换流。
因此,作为 Node 流新手,我决定尝试将我的代码修改为:
const stripAnsiStream = require('strip-ansi-stream')
const logStream = fs.createWriteStream('./log.txt')
fn(stripAnsiStream().pipe(logStream))
...这不起作用:我的日志文件仍然包含带有 ANSI 转义码的内容。我认为这是因为没有创建像
这样的链a.pipe(b).pipe(c)
我真的做到了
a.pipe(b.pipe(c))
如何在不控制提供读取流的管道链的开头的情况下将此转换流应用到我的写入流?
【问题讨论】:
标签: javascript node.js stream