Javascript csv parse解析的对象的第一个属性不可解析
我正在使用解析包含以下内容的csv文件- 但是,在返回的对象上,无法访问从第一列Javascript csv parse解析的对象的第一个属性不可解析,javascript,node.js,csv-parse,Javascript,Node.js,Csv Parse,我正在使用解析包含以下内容的csv文件- 但是,在返回的对象上,无法访问从第一列userID创建的属性 这是我的密码-- 异步函数main(){ 让systemIDs=wait-getSystemIds('./systems.csv'); log(`Scanning data for${systemIDs.length}systems..`); console.log(systemid[0]); console.log(systemIDs[0].userID);//这将打印未定义的 conso
userID
创建的属性
这是我的密码--
异步函数main(){
让systemIDs=wait-getSystemIds('./systems.csv');
log(`Scanning data for${systemIDs.length}systems..`);
console.log(systemid[0]);
console.log(systemIDs[0].userID);//这将打印未定义的
console.log(systemIDs[0].sysID);//这将打印正确的值
}
异步函数getSystemId(路径){
设ids=[];
等待新的承诺((决定,拒绝)=>{
const csvParser=csvParse({columns:true,skip_empty_line:true});
FS.createReadStream(路径)
.管道(csvParser)
.on('可读',()=>{
记录;
while(record=csvParser.read()){
id.push(记录);
}
})
.on('finish',()=>{
解决();
});
});
返回ID;
}
输出-
扫描两个系统的数据。。
{'userID':'20',sysID:'50'}
未定义的//最终我自己解决了
我需要BOM选项。UTF-8文件应设置为true的状态。但它默认为false
默认情况下,Excel生成csv文件,其中BOM表作为csv文件中的第一个字符。解析器将其作为头(和键名)的一部分提取。
当bom选项设置为true时,它可以处理从excel或其他程序生成的csv文件
const csvParser=csvParse({
专栏:对,
跳过空行:真,
bom:对
});
csv文件中可能有空格吗?另外,您可以在以下内容之后控制台.log(record):while(record=csvParser.read()){@Skarlinski它看起来是一样的{'userID':'20',sysID:'50'}
听起来像是原始csvI中一些奇怪的unicode或隐藏空格问题会测试其他csv,或者在运行inspect时添加断点。
userID,sysID
20,50
30,71