Tengo un servidor node.js (express.js) y tengo un archivo json que uso para leer y escribir datos (api simple). Cuando se detiene el servidor node.js, esa otra aplicación agrega datos al archivo json sin ningún problema. Cuando se inicia el servidor node.js, esa otra aplicación ve ese archivo json como un archivo vacío, probablemente porque el servidor node.js lo mantiene abierto. En node.js uso fs.readFile
y cierra el archivo json después de leer, así que no creo que ese sea el problema. Todo esto está sucediendo en una máquina Windows local. ¿Alguien ha tenido un problema similar al compartir un solo archivo con node.js y alguna otra aplicación? Si alguien tuviera una dirección que me oriente, donde buscar una solución.
¡Gracias por tu tiempo!
@jfriend00 En cuanto a esa otra aplicación, fue escrita en clarion y no tengo acceso en este momento. Esa aplicación rara vez escribe datos en ese archivo. Así es como leo y escribo el archivo:
function load(fileName, path, callback) { let jsonPath = ""; if(fileName == "companies") { jsonPath = __dirname + "\\..\\..\\"; } else { jsonPath = path; } fs.readFile(jsonPath + fileName.toUpperCase() + '.JSON', function (err, data) { if (err) { if (err.code === "ENOENT") { console.log("File '" + fileName.toUpperCase() + ".JSON' not found!"); callback([]); return; } else { throw err; } } callback(JSON.parse(data.toString())); }); } function save(fileName, path, array) { let jsonPath = ""; if(fileName == "companies") { jsonPath = __dirname + "\\..\\..\\"; } else { jsonPath = path; } fs.writeFile(jsonPath + fileName.toUpperCase() + '.JSON', JSON.stringify(array), function (err) { if (err) { throw err; } }); }
Ese software con el que comparto json necesita un formato agradable, no datos de una línea. Por lo tanto, tengo que agregar dos parámetros más en JSON.stringify(array, null, 2)
para formatear bien los datos cuando llama al método fs.writeFile
. Olvidé esto por completo. Fueron dos días de agonía.