首页 > 解决方案 > 有没有办法在 node.js 中同步读取 CSV?

问题描述

我正在使用csv-parserlib 解析 node.js 中的 CSV。但我需要解析的数据在整个项目中都可用,而不仅仅是在“fs”部分。我知道有一个fs.readFileSync选项,但它没有用,因为 CSV 是二进制文件(至少在 node.js 解释中)。我该怎么办?

const csv = require("csv-parser");
const fs = require("fs");


const cities = [];


let content = fs.createReadStream('data.csv')
  .pipe(csv())
  .on('data', (row) => {
    cities.push(row);
  });

  

var city_data = {
    createArrayId: function(){
        console.log(cities);
        return cities;
    }
}

module.exports = city_data;

如您所见,我需要导出“城市”数组。现在它返回空值(初始化值)。

标签: javascriptnode.jscsv

解决方案


csv-parser似乎总是异步的,所以你在那里不走运。

如果data.csv不经常更改,我建议将其解析为 JSON 一次,然后require直接解析为 JSON。

否则,您可以自己实现同步 CSV 解析,或者重构代码以等到异步解析完成后再继续处理该数据。


推荐阅读