Hace un tiempo, armé un proyecto de nodo que fue diseñado para ejecutarse en el navegador, y una de las cosas principales que hace es analizar los archivos CSV que transmite desde un servidor y operar en ellos en fragmentos. Cuando inicialmente armé esto, IE11 era una preocupación, y a través de una cantidad poco saludable de cafeína y probablemente algunos sacrificios a varios dioses mayores, logré que algo funcionara en su mayoría (obviamente no con la transmisión real, pero lo suficientemente cerca). Ahora, estoy en el proceso de actualizar las dependencias y volver a trabajar, ya que IE11 ya no es una preocupación. Sin embargo, entre Webpack> 5 y algunos otros paquetes que tienen cambios importantes, estoy luchando para que el análisis de CSV se comporte. La versión corta de lo que solía hacer era:
import { ReadableWebToNodeStream } from "readable-web-to-node-stream"; var csv = require("csv-parse/lib/es5") [...] var response = fetch(csv_url); new ReadableWebToNodeStream(response.body).pipe(csv()) .on('data', async (row) => { // Deals with the data here }).on('end', async () => { // Finishes up });Lo cual funcionó. El problema es que con los cambios en el paquete web (supongo), esa biblioteca ReadableWebToNodeStream ya no funciona de la manera que esperaba, y prefiero hacerlo de la manera correcta ahora que IE11 ya no me obliga a hacer cosas horribles. Todavía tengo que hacer algunas transformaciones en los datos entrantes, así que prefiero mantener la entrada como una secuencia para no consumir una gran cantidad de memoria (estos archivos CSV tienen el potencial de ser enormes), pero Estoy luchando por encontrar una manera de interactuar con Web ReadableStreams usando csv-parse.
Así que supongo que el consejo que me gustaría es:
Por lo tanto, este problema se debió a la actualización del paquete web 5+ que provocó que los módulos del núcleo del nodo ya no estuvieran polillenados. Supuse erróneamente que el polyfilling fetch + streams sería suficiente, pero necesitaba polyfills adicionales (en mi caso, el proceso era el culpable). Esta pregunta tiene más información sobre lo que cambió en la actualización y lo que se debe policompletar. Con todo polillenado, pude canalizar los CSV que estaba obteniendo a través de csv-parse como antes.