Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

97
Vistas
La aplicación Express solo muestra JSON en Windows, no en Debian o Heroku

He creado una aplicación rápida que muestra JSON con éxito en Windows; no he tenido ningún problema en Firefox o Chrome. Sin embargo, cuando intento ejecutar el mismo código en mi configuración de Linux (Debian) o implementarlo en Heroku, aparece una matriz vacía: []. ¿Cómo puedo hacer que se muestre en algo más que ventanas? Aquí está el archivo js:

 var express = require('express'); var router = express.Router(); var fs = require('fs'); //read file of chore todos function readCSV(callback) { fs.readFile('./data/todoList.csv', function(err, data) { if(err) throw err; var dataStr = data.toString(); var array = dataStr.split("\n"); fs.writeFileSync('./data/todo.json', JSON.stringify(convertToJSON(array), null, 4)); var temp = convertToJSON(array); return callback(temp); }); } //convert array to JSON function convertToJSON(array) { var rows = array.toString(); rows = rows.split("\r"); for (var i=1; i<rows.length;i++) { rows[i] = rows[i].replace(rows[i][0], ""); } var asJSON = []; // get column headers var headers = rows[0].split(","); for (var i=1; i<rows.length-1; i++) { var obj = {} var currentRow = rows[i].split(","); for (var j=0; j<headers.length; j++) { obj[headers[j]] = currentRow[j]; } asJSON.push(obj); } return asJSON; } var returnJSON; readCSV(function(temp) { returnJSON=temp; }) router.get('/', function (req, res, next) { res.json(returnJSON); }); module.exports = router;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema es causado por la siguiente línea en la función convertToJSON()

 rows = rows.split("\r");

Considere el siguiente archivo csv creado en Windows.

ingrese la descripción de la imagen aquí

Y su representación binaria: ingrese la descripción de la imagen aquí

Notará que el carácter de nueva línea se indica con "\r \n" o caracteres CR LF

Si se crea el mismo csv en Linux, su versión binaria se verá a continuación: ingrese la descripción de la imagen aquí Aquí, el carácter de nueva línea se indica con "\n" o carácter LF.

Los diferentes sistemas operativos manejan el carácter de nueva línea de manera diferente. Consulte https://en.wikipedia.org/wiki/Newline para obtener más detalles.

Para que funcione para Linux, puede cambiar a continuación

 rows = rows.split("\n");

Sin embargo, esto no funcionará para Windows.

¿Cómo puedo hacer que se muestre en algo más que ventanas?

Use csvtojson para manejar los casos extremos como estos y la mayor parte del trabajo pesado. Sin embargo, si desea manejarlo por su cuenta, puede verificar cómo lo maneja el paquete aquí.

https://github.com/Keyang/node-csvtojson/blob/master/src/getEol.ts

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda