使用text2json将TSV文件转换为JSON不返回值

使用text2json将TSV文件转换为JSON不返回值,json,node.js,csv,testing,ava,Json,Node.js,Csv,Testing,Ava,我正在尝试将TSV文件转换为JSON,并使用将其写入磁盘 输入数据 末尾有一条空行 U+2B695 shī U+2B699 pū U+2B6DB zhī U+2B6DE jué U+2B6E2 níng U+2B6F6 chì U+2B6F8 tí 试验 我用ava import fs from "fs"; import test from "ava"; import jsonfile from "jsonfile"; import dataminer from "../src/datamin

我正在尝试将TSV文件转换为JSON,并使用将其写入磁盘

输入数据 末尾有一条空行

U+2B695 shī
U+2B699 pū
U+2B6DB zhī
U+2B6DE jué
U+2B6E2 níng
U+2B6F6 chì
U+2B6F8 tí
试验 我用
ava

import fs from "fs";
import test from "ava";
import jsonfile from "jsonfile";
import dataminer from "../src/dataminer";

test("extractPronunciation()", t => {
  const filepath = "src/codepoint-ruby.tsv";

  const data = dataminer.convertToJson(filepath, { separator: " " });

  t.is(data > 0);
});
代码 该方法基于:

问题:
我没有看到被触发的
end
事件的痕迹,
convertToJson()
没有返回任何东西,所以我的测试失败了,我是否遗漏了什么?

在您的方法中,您通过异步读取流来填充
数据
数组,而不是将整个文件放在内存中并同步执行。(这就是为什么必须使用
on
事件将数据推送到阵列中的原因)

这意味着,以您使用

parse.text2json(filepath).on("row", row => {
      data.push(row);
});
您还需要使用
end
事件来记录最终结果

parse.text2json(filepath)
    .on("row", row => {
        data.push(row);
    })
    .on('end', () => {
        console.log(data)
    });

在您的方法中,您通过异步读取流来填充
数据
数组,而不是将整个文件放入内存并同步执行。(这就是为什么必须使用
on
事件将数据推送到阵列中的原因)

这意味着,以您使用

parse.text2json(filepath).on("row", row => {
      data.push(row);
});
您还需要使用
end
事件来记录最终结果

parse.text2json(filepath)
    .on("row", row => {
        data.push(row);
    })
    .on('end', () => {
        console.log(data)
    });

在我的案例中,
end
事件似乎没有被触发。我更新了问题以提供更多的上下文是的,我看到你提交了一个问题。但是,即使尝试回调方法,也不会得到同步响应。(当然,您必须使用回调)。现在,关于“结束”事件没有发生,您可以再次尝试回调方法,或者听
错误
事件,因为读取文件后必须回调或发出结束。在我的情况下,
end
事件似乎没有触发。我更新了问题以提供更多的上下文是的,我看到你提交了一个问题。但是,即使尝试回调方法,也不会得到同步响应。(当然,您必须使用回调)。现在,关于“end”事件没有发生,您可以再次尝试回调方法,或者听
error
事件,因为读取文件后必须回调或发出end。