Node.js "require" function and parameters

Javascriptnode.jsRequire

Javascript Problem Overview


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"

Javascript Solutions


Solution 1 - Javascript

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 - Javascript

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser885355View Question on Stackoverflow
Solution 1 - JavascriptRaynosView Answer on Stackoverflow
Solution 2 - JavascriptJim SchubertView Answer on Stackoverflow