javascript - Node require() issue with 2 scripts that require each other -
i have 2 different node scripts... save_info.js
imports openconections array
sse_server.js
. and, sse_server.js
imports function broadcast
save_info.js
. however, causing openconnections array
undefined
within of save_info.js
. why , how can prepare this?
save_info.js:
var openconnections = require('../scripts/sse_server.js').openconnections; function broadcast(result, event, httpobject) { var result = json.stringify(result); var date = new date().getmilliseconds(); httpobject.write('id: ' + date + '\n'); httpobject.write('data: { \"' + event + '\":\n'); httpobject.write('data:' + result + '\n'); httpobject.write('data: }' + '\n\n'); } function db_finish(err, product, numberaffected, result, event) { if (err) { console.log(err) } else { console.log("db insert successfull"); openconnections.foreach(function(httpobject) { broadcast(result, event, httpobject); }); } console.log("numer effected " + numberaffected); } module.exports.openconnections = openconnections;
sse_server.js:
var broadcast = require("../data/save_info").broadcast; var openconnections = []; (var model in models){ models[model].find({}).sort({_id: -1}).limit(1).exec( function (err, result){ broadcast(result, model, res); }); } module.exports.broadcast = broadcast;
to prevent circular dependency, nodejs module loader stops loading sse_server module in save_info.js that's why openconnections undefined. resolve this, following:
1) move broadcast() out separate module (broadcast.js example).
2) set require('../data/broadcast.js') in both sse_server.js , save_info.js
3) remove require('../data/save_info') in sse_server.js
javascript node.js
No comments:
Post a Comment