不写入创建的流可写 node.js

Posted

技术标签:

【中文标题】不写入创建的流可写 node.js【英文标题】:does not write to the created stream writable node.js 【发布时间】:2021-09-15 02:17:06 【问题描述】:
let testWriteableStream_1 = fs.createWriteStream("logs/test_profit_1.csv",  flags: 'a' );
let testWriteableStream_2 = false;
let testFlag =  number: 1 ;
let testCount =  number: 0 ;
let testCountAll =  number: 0 ;

function TestWritable2(testWriteableStream_1, testWriteableStream_2, testFlag, testCount, testCountAll) 
  let time = new Date().getTime();
  console.log('time:', time);
  if (testCount.number === 5) 
    testWriteableStream_2 = fs.createWriteStream(`logs/test2_profit$time.csv`,  flags: 'a' );
    console.log('testWriteableStream_2._writableState 5:----------------------------------------------', testWriteableStream_2._writableState);
  
  if (testCount.number === 10) 
    console.log('testWriteableStream_2._writableState 10:----------------------------------------------', testWriteableStream_2._writableState);
    testWriteableStream_2.write(`writeableStream_$testCountAll.number\r\n`);
  
  testCount.number++;



 TestWritable2(testWriteableStream_1, testWriteableStream_2, testFlag, testCount, testCountAll);

该函数在 websocket 'message' 事件中被调用。 消息错误: iteableStream_2.write 不是函数

testWriteableStream_2.write(`writeableStream_$testCountAll.number\r\n`);
                      ^
TypeError: testWriteableStream_2.write is not a function

【问题讨论】:

【参考方案1】:

testCount.number === 10 的情况下,您不创建流,testWriteableStream_2 仍然是false,它没有write 方法。也为这种情况创建一个流,你应该没问题。

【讨论】:

是的。在 testCount.number === 10 的情况下,我没有创建它,因为我已经在此迭代 testCount.number === 5 中创建了它。并且流在全局范围内声明并传递给函数。我相信我将 testWriteableStream_2 = false 传递给函数,然后在第 5 次迭代时创建一个流,然后在第 10 次迭代时写入该流,但由于某种原因它不再存在。 @Illusion testWriteableStream_2 是一个参数名称 - 您正在更改函数范围内的局部变量 这是为什么呢?我在外面声明了变量 testWriteableStream_2 并将其传递给函数。在函数内部,我没有声明这个变量,所以它必须从函数的参数或声明它的外部范围中获取它。 @Illusion 函数参数充当局部变量。在函数内部时,它hdies来自函数外部的同名变量 知道了。我传的是true,boolean值是传值,不是send。您需要传递对象或作为对象的属性,就像我对计数器所做的那样。

以上是关于不写入创建的流可写 node.js的主要内容,如果未能解决你的问题,请参考以下文章

node基础1--初识Node.js与内置模块

Node.js 可写流:write vs _write

NodeJS 可写流 writev 在 1 和 highWaterMark 块之间交替

nodejs的流总结

Node.js概述及编程基础

Node.js