【发布时间】:2022-01-21 16:44:38
【问题描述】:
我希望接受有关此问题的教育,因为我花了几天时间试图自己解决它,但无济于事。
我正在使用 csv-parse 解析 CSV 文件。
我正在使用 ESLint 作为我的 Linter
我正在为 ESLint 使用 Airbnb JavaScript Style Guide 插件
我正在使用 NodeJS 在后端运行它
我的功能是:
const { parse } = require('csv-parse');
const fs = require('fs');
const csvFile = 'myCsvFile.csv';
async function parseCsv(csvFile) {
const records = [];
const parser = fs.createReadStream(csvFile).pipe(parse({ delimiter: ',', columns: true }));
for await (const record of parser) {
records.push(record);
}
return records;
该功能运行良好,但是我正在尝试遵守 Airbnb 的样式指南,它不喜欢 for await...of 循环,因为它违反了 no-restricted-syntax。
我很好奇是否有更好的方法来编写此代码以符合 Airbnb 的样式指南,或者如果这是可以忽略违规的情况之一?
【问题讨论】:
-
嗯,你所链接的任何Airbnb推理是否引起了你的共鸣?
-
为什么?这执行了我们的不可变规则。处理返回值的纯函数比副作用更容易推理。这似乎不适用于您的情况。
-
@Bergi,好问题。不,它没有引起我的共鸣,这就是我问的原因。我才刚刚踏上这段旅程的几年,有时我需要帮助才能透过树木看到森林。看似简单的事情,我仍然怀念。
-
@JeremyM 然后我建议不要使用该样式指南(或至少不要使用该规则)。 Imo,airbnb 有点误导,经常阻止你使用现代语法。
-
@EmielZuurbier 在某种程度上,确实如此,
records.push(record)是一个副作用。问题是目前节点流(或异步迭代器)上没有帮助方法可以缓解这种情况 - 但是使用iterator helpers proposal,您可以将所有这些简化为const records = await parser.toArray()
标签: javascript node.js eslint airbnb-js-styleguide csv-parse