CSV首键带引号无法访问?React+Node.js+MongoDB场景求助
解决CSV Parser无法访问
Bookmaker字段值的问题 常见原因及解决方案
排查键名是否含隐藏字符
很多时候CSV表头会带BOM(字节顺序标记)或不可见空格,导致你看到的Bookmaker不是实际的键名。先打印实际键名和字符编码确认:.on('data', (data) => { const firstKey = Object.keys(data)[0]; console.log('实际键名:', firstKey); console.log('字符编码:', [...firstKey].map(c => c.charCodeAt(0))); });如果输出里有
65279(对应BOM的\ufeff),说明是BOM问题。处理BOM或隐藏字符
方案1:用strip-bom-stream包清除BOM:const stripBom = require('strip-bom-stream'); fs.createReadStream(filePath) .pipe(stripBom()) .pipe(csv({ separator: ';' })) .on('data', (data) => { console.log(data.Bookmaker); // 正常访问 });方案2:手动清洗所有键名(无需额外包):
.on('data', (rawData) => { const cleanedData = Object.fromEntries( Object.entries(rawData).map(([key, val]) => [ key.trim().replace(/^\ufeff/, ''), // 去除BOM和前后空格 val ]) ); console.log(cleanedData.Bookmaker); });检查CSV表头格式
打开CSV文件确认表头是不是Bookmaker,有没有前后空格或特殊字符,比如Bookmaker或Bookmaker\n,这种情况用上面的trim()就能解决。
内容的提问来源于stack exchange,提问作者Lucas Barray
相关产品推荐
相关产品推荐

