Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有同步读取node.js中CSV的方法?_Javascript_Node.js_Csv - Fatal编程技术网

Javascript 是否有同步读取node.js中CSV的方法?

Javascript 是否有同步读取node.js中CSV的方法?,javascript,node.js,csv,Javascript,Node.js,Csv,我正在使用CSV解析器lib解析node.js中的CSV。但我需要解析的数据在整个项目中都是可用的,而不仅仅是在“fs”部分。我知道有fs.readFileSync选项,但它没有用,因为CSV是二进制文件(至少在node.js解释中是这样)。我该怎么办 const csv=require(“csv解析器”); 常数fs=要求(“fs”); 康斯特城市=[]; 让content=fs.createReadStream('data.csv') .pipe(csv()) .on('数据',(行)=>{

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

const csv=require(“csv解析器”);
常数fs=要求(“fs”);
康斯特城市=[];
让content=fs.createReadStream('data.csv')
.pipe(csv())
.on('数据',(行)=>{
城市。推(行);
});
var city_数据={
createArrayId:function(){
console.log(城市);
回归城市;
}
}
module.exports=城市数据;

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

csv解析器似乎总是异步的,所以你在这里运气不好

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


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

还有更好的CSV库。查看
papaparse
,它解析字符串/缓冲区而不是文件,因此始终是同步的(对于非常大的字符串,可以通过web workers使用异步过程,但这仅适用于浏览器而不是节点)。您可以使用
fs.readFileSync
在将文件传递给
papaparse