Подтвердить что ты не робот

Node.js "требуют" функции и параметров

Когда я это сделаю:

lib = require('lib.js')(app)

есть app, фактически получая переданный в?

в lib.js:

exports = module.exports = function(app){}

Кажется, что нет, поскольку, когда я пытаюсь сделать больше, чем просто (app) и вместо этого:

lib = require('lib.js')(app, param2)

и

exports = module.exports = function(app, param2){}

Я не получаю params2.

Я попытался выполнить отладку:

params = {}
params.app = app
params.param2 = "test"

lib = require("lib.js")(params)

но в lib.js, когда я пытаюсь JSON.stringify получить эту ошибку:

"DEBUG: TypeError: Converting circular structure to JSON"
4b9b3361

Ответ 1

Когда вы вызываете lib = require("lib.js")(params)

Фактически вы вызываете lib.js с одним параметром, содержащим два имени свойства app и param2

Вы либо хотите

// somefile
require("lib.js")(params);
// lib.js
module.exports = function(options) {
  var app = options.app;
  var param2 = options.param2;
};

или

// somefile
require("lib.js")(app, param2)
// lib.js
module.exports = function(app, param2) { }

Ответ 2

У вас может быть значение undefined, которое вы пытаетесь передать.

Возьмем, например, requires.js:

module.exports = exports = function() {
   console.log('arguments: %j\n', arguments);
};

Когда вы вызываете его правильно, он работает:

node
> var requires = require('./requires')(0,1,2,3,4,5);
arguments: {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5}

Если у вас есть синтаксическая ошибка, она терпит неудачу:

> var requires = require('./requires')(0,);
... var requires = require('./requires')(0,2);
... 

Если у вас есть объект undefined, он не работает:

> var requires = require('./requires')(0, undefined);
arguments: {"0":0}

Итак, я сначала проверил, чтобы ваш объект был правильно определен (и правильно написано, когда вы его передаете), а затем убедитесь, что у вас нет синтаксических ошибок.