Me too - I also put most of my requires in there too. Richard
On 14 Sep 2012, at 17:05, "Chad Engler" <[email protected]> wrote: > 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 -- 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
