Node.js导入CSV文件时持续转为Buffer的问题求助
排查并解决fast-csv导入CSV时的Buffer异常问题
嘿,我看了你的代码和遇到的问题,很快发现了关键问题所在!你的fast-csv调用语法写错了,这直接导致了文件处理异常,出现持续转为Buffer的情况。
问题根源
csv.fromPath方法的第二个参数要求是一个配置对象,但你现在直接写了delimiter="\t", headers=true——这种写法在JavaScript里是不合法的,相当于没有正确传递配置,导致库无法正确解析文件,进而引发流处理异常。
修正后的代码
var fs = require('fs'); var csv = require('fast-csv'); var counter = 0; // 把配置项放进一个对象里,这才是正确的传递方式 let csvStream = csv.fromPath("C:\\A_projects\\3-23-2018 Twillio testing\\test\\test.txt", { delimiter: "\t", headers: true }) .on("data", function(record){ csvStream.pause(); if(counter < 10) { let acct_id = record.acct_id; // 这里写你的后续处理逻辑 counter++; } // 别忘了恢复流!不然会一直卡住,导致Buffer无法释放 csvStream.resume(); }) .on("end", function(){ console.log("CSV文件处理完成啦"); }) .on("error", function(err){ console.error("处理时出问题了:", err); });
额外提醒
- 流暂停后一定要恢复:你之前调用了
pause()但没在合适的时机resume(),这会让流一直处于暂停状态,也是文件持续转为Buffer的潜在诱因。 - 加上错误监听:
error事件能帮你快速定位问题,比如文件找不到、格式不对等情况,都能在这里拿到详细报错。 - 路径写法优化:Windows路径里的反斜杠可以换成正斜杠
/,这样不用手动转义,写起来更省心,比如"C:/A_projects/3-23-2018 Twillio testing/test/test.txt"
把配置对象的写法改对,再补上流的恢复操作,应该就能解决你遇到的异常了!
内容的提问来源于stack exchange,提问作者fudge
相关产品推荐
相关产品推荐

