Con el siguiente código, obtengo
{ test1: 'aaa', test2: 'bbb' } que es lo que quiero. Es decir. pudiendo tener una variable global entre t2.js y t3.js
En este PoC, t3() solo se llama una vez, pero en el caso real, habrá ~ 100 instancias de t3() que nunca terminan, porque recopilan datos en un bucle infinito. t2.js no necesitará modificar c .
Pregunta
¿Es posible ser el mismo, pero sin un tercer archivo ( t1.js en este caso)?
t1.js
module.exports = {};t2.js
const express = require('express'); const app = express(); let c = require('./t1'); const t3 = require('./t3'); c.test1 = "aaa"; t3(); console.log(c); app.get('/test.json', (req, res) => { res.send(JSON.stringify(c, null, 2)); }); app.listen(1900, () => {});t3.js
let c = require('./t1'); module.exports = () => { c.test2 = "bbb"; };Parece que sería bastante simple crear un objeto en el punto de entrada y luego pasarlo:
const express = require('express'); const app = express(); const t3 = require('./t3'); const records = { test1: "aaa", }; t3(records); console.log(records); app.get('/test.json', (req, res) => { res.send(JSON.stringify(records, null, 2)); }); app.listen(1900, () => {}); module.exports = (records) => { records.test2 = "bbb"; }; Tenga en cuenta que ni en este código ni en su código original se utilizan variables globales (excepto, supongo, para require ).