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"
Ответы
Ответ 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}
Итак, я сначала проверил, чтобы ваш объект был правильно определен (и правильно написано, когда вы его передаете), а затем убедитесь, что у вас нет синтаксических ошибок.