javascript - 如何继续在同一个 csv 文件上写入?

标签 javascript node.js csv npm cron

我正在使用这个nodejs package为了每分钟向 CSV 文件写入一些数据,到目前为止,文件的创建是可以的,第一次写入也可以,但是当需要在同一个文件上再次写入时,nodejs 会抛出错误,我试图四处寻找解决方案,但我一无所获,希望有人能帮助我。我将发布我现在拥有的内容

var cronCSV = require('node-schedule');
var csvWriter = require('csv-write-stream');
var writer = csvWriter({sendHeaders: false});
var ruleCSV = new cron.RecurrenceRule();
ruleCSV.second = 1;
const fs = require('fs');
writer.pipe(fs.createWriteStream('out.csv'))
//SOME OTHER CODE

    cronCSV.scheduleJob(ruleCSV, function(){

        writer.write({hPerc: hPerc, humidity: humidity});
        writer.end();
        console.log("Scritto su CSV");
    });

错误:

_stream_readable.js:501
  dest.on('unpipe', onunpipe);
      ^

TypeError: Cannot read property 'on' of undefined
    at CsvWriteStream.Readable.pipe (_stream_readable.js:501:7)
    at Job.job (/home/pi/node_led/main.js:64:10)
    at Job.invoke (/home/pi/node_led/node_modules/node-schedule/lib/schedule.js:175:10)
    at Timeout._onTimeout (/home/pi/node_led/node_modules/node-schedule/lib/schedule.js:479:11)
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)

最佳答案

您在第一次(以及每次)写入管道后立即关闭管道:

您应该删除此行:

writer.end();

如果该进程打算在任何时间完成,那么最好在此之前执行它。但当您希望多次写入时就不会了。

关于javascript - 如何继续在同一个 csv 文件上写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40407492/

相关文章:

regex - 带数字的 CSV 正则表达式

javascript - POST 变量没有将日期从 jQuery 提交到 php

javascript - Chrome 扩展 list CSP 在公共(public)页面上被忽略

node.js - HasMany 关系在使用 mongodb 数据库的 Adonis 框架中不起作用

node.js - Meteor:ReferenceError:IRC 未定义

javascript - 如何导入制表符分隔的 "CSV"

javascript - 使用脚本标签的跨站点脚本,更改脚本标签的 src,我们可以使用 id 作为脚本标签

javascript - 单击链接后让 Nightmare 等待下一页加载

javascript - 为什么这个包装函数调用比普通函数更快?

python - Pandas DataFrame 高效的数据移动