k00k k00k - 5 months ago 32
Node.js Question

Call a "local" function within module.exports from another function in module.exports?

How do you call a function from within another function in a

module.exports
declaration?

Here's some simplified code.

In my app.js, I do the following:

var bla = require('./bla.js');
console.log(bla.bar());


and inside of bla.js is

module.exports = {

foo: function (req, res, next) {
return ('foo');
},

bar: function(req, res, next) {
this.foo();
}

}


I'm trying to access the function
foo
from within the function
bar
, and I'm getting:

TypeError: Object # has no method 'foo'


If I change
this.foo()
to just
foo()
I get:

ReferenceError: foo is not defined

Answer

You could declare your functions outside of the module.exports block.

var foo = function (req, res, next) {
  return ('foo');
}

var bar = function (req, res, next) {
  return foo();
}

Then:

module.exports = {
  foo: foo,
  bar: bar
}