【问题标题】:Nodejs : TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be one of type string or Buffer. Received type numberNodejs:TypeError [ERR_INVALID_ARG_TYPE]:“块”参数必须是字符串或缓冲区类型之一。收到的型号
【发布时间】:2020-11-22 16:45:29
【问题描述】:

我刚开始学习流,我正在尝试将数字写入 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();

【问题讨论】:

    标签: node.js


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 2020-08-22
      • 2019-10-13
      • 2019-08-15
      • 2019-01-26
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多