我才刚刚开始学习流媒体,我正在尝试将数字写入newfile.txt,但会引发错误:
TypeError [ERR_INVALID_ARG_TYPE]:“块”参数必须是以下参数之一 输入字符串或缓冲区。收到的类型编号
代码
const {Readable,pipeline} = require('stream');
const {createWriteStream} = require('fs');
async function myfunc(){
const stream = Readable.from(Array.from({length:20},(x,i)=>i+1));
pipeline(stream,createWriteStream('./newfile.txt'),(err)=>{
console.log(err);
})
}
myfunc();
答案 0 :(得分:0)
pipeline
期望第一个参数的类型为ReadableStream
。 Readable.from
返回类型为internal.Readable
的值(不是必需的可读流类型),这就是为什么看到错误的原因。
这里是如何使用它的示例(将文件加载为可读流,然后将其推送为写流)。
const { pipeline } = require('stream');
const { createWriteStream, createReadStream } = require('fs');
async function myfunc() {
const stream = createReadStream('./oldfile.txt');
pipeline(stream, createWriteStream('./newfile.txt'), (err) => {
console.log(err);
});
}
myfunc();
如果要使用pipeline
将某些字符串(或对象)推入可写流,而不是加载某些文件的内容,则可以使用Duplex
const { Duplex, pipeline } = require('stream');
const { createWriteStream } = require('fs');
const b = Buffer.from('some text');
const readStream = Duplex();
readStream.push(b);
readStream.push(null);
pipeline(readStream, createWriteStream('./newfile.txt'), (err) => {
console.log(err);
});