¿ require() en JavaScript/Node.js ejecuta el mismo archivo cada vez que se importa a otros módulos?
En caso afirmativo, ¿cómo puedo tener una matriz en un archivo y agregar/actualizar valores en él desde otro archivo JS? Por ejemplo, tengo una matriz en un archivo y estoy actualizando la matriz desde varios archivos y quiero que todos interactúen solo con la matriz actualizada. ¿Cómo puedo conseguir esto?
Los módulos se almacenan en caché, si los vuelve a cargar, se carga la copia en caché.
https://nodejs.org/api/modules.html#modules_require_cache
Los módulos se almacenan en caché en este objeto cuando son necesarios. Al eliminar un valor clave de este objeto, el próximo requerimiento recargará el módulo. Esto no se aplica a los complementos nativos, para los cuales la recarga dará como resultado un error.
También es posible agregar o reemplazar entradas. Este caché se verifica antes que los módulos nativos y si se agrega un nombre que coincida con un módulo nativo al caché, ninguna llamada requerida volverá a recibir el módulo nativo. ¡Úsalo con cuidado!
Puede usar https://www.npmjs.com/package/clear-module
const clearModule = require('clear-module'); const myArray = clearModule('./myArray'); // but you need load this everytime to get fresh copy of that arrayEn cambio, puede exponer una función de su módulo para leer el valor de la matriz, por lo que siempre obtendrá un nuevo valor.
const myArray = [1]; const get = () => { return myArray; }; const update = (data) => { myArray.push(data); }; exports.get = get; exports.update = update; const myArray = require('./myArray'); console.log(myArray.get()); // [1] console.log(myArray.update(2)); // update the value console.log(myArray.get()); // [1,2] Así que ahora use myArray.get() siempre para leer el valor y use myArray.update(data) para actualizar el.