Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

117
Views
Cómo evitar la espera... de con csv-parse

Estoy buscando ser educado sobre este problema ya que he pasado unos días tratando de resolverlo por mi cuenta, sin éxito.

Estoy usando csv-parse para analizar un archivo CSV.
Estoy usando ESLint como mi Linter
Estoy usando el complemento de la guía de estilo de JavaScript de Airbnb para ESLint
Estoy ejecutando esto en el backend usando NodeJS

mi función es:

 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;

La función funciona bien, sin embargo, estoy tratando de cumplir con la Guía de estilo de Airbnb, a la que no le gusta el bucle for await...of , ya que me está golpeando con la violación no-restricted-syntax .

Tengo curiosidad por saber si hay una mejor manera de escribir esto para estar en línea con la Guía de estilo de Airbnb o si esta es una de esas situaciones en las que está bien ignorar la infracción.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

La guía de estilo dice:

11.2 No use generadores por ahora. ¿Por qué? No se transpilan bien a ES5.

Afortunadamente, si está usando una versión reciente de NodeJS, no necesita transpilar y puede usar el soporte nativo del motor. Para los navegadores, este consejo también quedará obsoleto pronto.

about 4 years ago · Juan Pablo Isaza Report

0

¿Qué hay de usar los eventos y devolver la promesa?

 const { parse } = require('csv-parse'); const fs = require('fs'); const csvFile = 'myCsvFile.csv'; async function parseCsv(csvFile) { return new Promise((resolve) => { const records = []; const stream = fs.createReadStream(csvFile); const parser = stream.pipe(parse({ delimiter: ',', columns: true })); parser.on('readable', () => { while (record = parser.read()) { records.push(record); } }); let ended = false; const end = (error) => { if (error) { console.error(error.message); } if (!ended) { ended = true; resolve(records); } }; parser.on('error', end); parser.on('end', end); }); }

también si tiene el nodo 15+, intente el ejemplo de transmisión/promesas :

 const { parse } = require('csv-parse'); const fs = require('fs'); const { finished } = require('stream/promises'); const csvFile = 'myCsvFile.csv'; async function parseCsv(csvFile) { const records = []; const stream = fs.createReadStream(csvFile); const parser = stream.pipe(parse({ delimiter: ',', columns: true })); parser.on('readable', () => { let record; while ((record = parser.read()) !== null) { records.push(record); } }); await finished(parser); return records; }

csv-parse + corriente/promesas

about 4 years ago · Juan Pablo Isaza Report

0

Según los consejos dados en las respuestas, ignoraré la Guía de estilo de Airbnb y usaré el método iterador Async .

Código definitivo:

 const { parse } = require('csv-parse'); const fs = require('fs'); const path = require('path'); const debug = require('debug')('app:csv:service'); const chalk = require('chalk'); async function parseCsv(csvFile) { try { const records = []; const stream = fs.createReadStream(csvFile); const parser = stream.pipe(parse({ delimiter: ',', columns: true })); // eslint-disable-next-line no-restricted-syntax for await (const record of parser) { records.push(record); } return records; } catch (error) { debug(`${chalk.red('Failed')} to parse CSV`); debug(`${chalk.red('ERROR:')} ${error}`); throw error; } }

Puede que sea el momento de encontrar una nueva guía de estilo a seguir. Gracias a num8er por el consejo sobre el código (tomé una de sus ideas para hacer que mi código sea un poco más legible).

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!