I generally have a "common" module that is included everywhere. I think that is fairly common practice.
-Chad From: [email protected] [mailto:[email protected]] On Behalf Of Aga Sent: Friday, September 14, 2012 10:53 AM To: [email protected] Subject: [nodejs] Newbie question: How to share basic functions (for error handling, logging etc.) between modules? Hi, What's the best solution to share "basic" functions between modules? Is it ok to require a helper module in _every_ module? (because modules are cached after the first time they are loaded) e.g. // helper.js exports.cfg = require("config"); exports.log = new Logger({ ... }) exports.error = function error(childErr) { var err = new Error(); err.childErr = childErr; return(err); } exports.logError = function logError(err) { var count = 1; var errors = [] while(err) { errors.push("Stack " + count++ + " => " + err + ": " + err.stack); err = err.hasOwnProperty("childErr") ? err.childErr : undefined; } console.log(errors.join("\n")); return; } Requiring helper.js in each module allows application wide log(), cfg and to pass errors around rather than throwing them: // model.js var helper = require(helper.js); ... if(err) { return(callback(helper.error(err))); } ... // controller.js var helper = require(helper.js); var log = helper.log; log.debug("Running controller.js"); ... if(err) { // get error from model helper.logError(helper.error(err)); // log the error with all stack traces return next(new Error("An error occured!")); // return an useful error message/http status code } ... What do you think about this solution? Is it ok to require helper.js in every module file? Or is there an easier way? If so, it would be very nice if someone could post some code examples. Thanks Aga -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
