Tuesday, 15 March 2011

javascript - Node require() issue with 2 scripts that require each other -



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