Node.js "require" function and parameters
When I do:
lib = require('lib.js')(app)
is app
actually geting passed in?
in lib.js:
exports = module.exports = function(app){}
Seems like no, since when I try to do more than just (app)
and instead do:
lib = require('lib.js')(app, param2)
And:
exports = module.exports = function(app, param2){}
I don't get params2
.
I've tried to debug by doing:
params = {}
params.app = app
params.param2 = "test"
lib = require("lib.js")(params)
but in lib.js when I try to JSON.stringify
I get this error:
"DEBUG: TypeError: Converting circular structure to JSON"
Solution 1:
When you call lib = require("lib.js")(params)
You're actually calling lib.js
with one parameter containing two properties name app
and param2
You either want
// somefile
require("lib.js")(params);
// lib.js
module.exports = function(options) {
var app = options.app;
var param2 = options.param2;
};
or
// somefile
require("lib.js")(app, param2)
// lib.js
module.exports = function(app, param2) { }
Solution 2:
You may have an undefined value that you're trying to pass in.
Take for instance, requires.js
:
module.exports = exports = function() {
console.log('arguments: %j\n', arguments);
};
When you call it correctly, it works:
node
> var requires = require('./requires')(0,1,2,3,4,5);
arguments: {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5}
If you have a syntax error, it fails:
> var requires = require('./requires')(0,);
... var requires = require('./requires')(0,2);
...
If you have an undefined object, it doesn't work:
> var requires = require('./requires')(0, undefined);
arguments: {"0":0}
So, I'd first check to see that your object is defined properly (and spelled properly when you pass it in), then check that you don't have syntax errors.