node.js - 无法读取 csv 解析器中未定义的属性管道
问题描述
我正在尝试使用 csv 解析器上传一个 10mb 的大型 csv 文件,并在节点 js 中形成数据,同时使用 axios 向 api 发送请求。我的代码如下:
//insert new data
else if (`${flags.newdata}` !== "undefined" && `${flags.source}` !== "undefined" ){
var csv=require('csv-parser');
var FormData=require('form-data');
const form_data = new FormData();
var data = [];
form_data.append("file", fs.createReadStream(`${flags.source}`)).pipe(csv()).on('data',function(row){ data.push(row) }).on('end',function(){console.log('Data Loaded')});
/*const request_config = {
headers: {
"Authorization": token,
"Content-Type": "multipart/form-data"
},
data: form_data
};*/
return axios.post('https://localhost:8765/energy/api/Admin/' + `${flags.newdata}`, form_data);
}
我收到以下错误:
TypeError: Cannot read property 'pipe' of undefined
我读过类似的问题,但没有任何帮助。我该如何解决这个问题?
解决方案
看起来您想要管道不是流,而是 append() 的结果,但附加返回未定义。请像这样使用管道:
var readStream = fs.createReadStream(`${flags.source}`);
readStream.on('open', function () {
readStream.pipe(csv());
});
readStream
.on('data',function(row){ data.push(row) })
.on('end',function(){console.log('Data Loaded')});
推荐阅读
- c# - 使用 Windows 标识安全地保存用户数据
- c++ - 来自枚举值的 C++ decltype
- node.js - 尽管存在数据,但在 GraphQL 查询中日期字段返回为空
- angular - 为什么 Firestore 数据检索适用于 ng-serve 版本但在 ng-build 版本中失败
- java - 使用 java 连接到 Microsoft SQL 服务器的 JDBC
- c++ - 如何转换不同类型的迭代器
- ruby - 如何运行 ruby 脚本来解压缩文件?
- python - Python lxml xpath无法获取文本
- tsql - 在整个条目中插入带有案例的插入
- sql - 过滤重复条目