当前位置: 首页 > 知识库问答 >
问题:

Nodejs:TypeError[ERR_INVALID_ARG_TYPE]:“chunk”参数必须是string或Buffer类型之一。 接收类型号

左丘成业
2023-03-14

我刚刚开始学习流,我正试图将数字写入newfile.txt,但它会抛出一个错误:

TypeError[ERR_INVALID_ARG_TYPE]:“chunk”参数必须是string或Buffer类型之一。 接收类型号

《守则》

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();

共有1个答案

谷梁镜
2023-03-14

pipeline要求第一个参数的类型为ReadableStreamreadable.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);
});
 类似资料: