不写入创建的流可写 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的主要内容,如果未能解决你的问题,请参考以下文章