70 votes

Fonction "require" et paramètres de Node.js

Quand je le fais :

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

est app en fait de passer ?

dans lib.js :

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

On dirait que non, puisque quand j'essaie de faire plus que juste (app) et faire à la place :

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

Et :

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

Je ne comprends pas. params2 .

J'ai essayé de déboguer en faisant :

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

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

mais dans lib.js, lorsque j'essaie de JSON.stringify Je reçois cette erreur :

"DEBUG: TypeError: Converting circular structure to JSON"

104voto

Raynos Points 82706

Lorsque vous appelez lib = require("lib.js")(params)

Vous êtes en train d'appeler lib.js avec un paramètre contenant deux propriétés nom app y param2

Vous voulez soit

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

ou

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

18voto

Jim Schubert Points 10234

Vous avez peut-être une valeur non définie que vous essayez de faire passer.

Prenez par exemple, requires.js :

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

Lorsque vous l'appelez correctement, cela fonctionne :

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

Si vous avez une erreur de syntaxe, il échoue :

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

Si vous avez un objet indéfini, cela ne fonctionne pas :

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

Je vérifierais donc d'abord que votre objet est bien défini (et orthographié correctement lorsque vous le passez), puis que vous n'avez pas d'erreurs de syntaxe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X