it-swarm.it

Node.js "richiede" funzione e parametri

Quando io faccio:

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

app viene effettivamente superato?

in lib.js:

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

Sembra di no, da quando provo a fare molto più che solo (app) e invece fai:

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

E:

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

Non capisco params2.

Ho provato a eseguire il debug facendo:

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

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

ma in lib.js quando provo a JSON.stringify Ricevo questo errore:

"DEBUG: TypeError: Converting circular structure to JSON"
68
user885355

Quando si chiama lib = require("lib.js")(params)

In realtà stai chiamando lib.js con un parametro contenente due proprietà nome app e param2

O vuoi

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

o

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

Potresti avere un valore indefinito che stai tentando di trasmettere.

Prendi ad esempio, requires.js:

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

Quando lo chiami correttamente, funziona:

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

Se si verifica un errore di sintassi, non riesce:

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

Se hai un oggetto non definito, non funziona:

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

Quindi, per prima cosa verificherei che il tuo oggetto sia definito correttamente (e scritto correttamente quando lo passi dentro), quindi controlla che non ci siano errori di sintassi.

18
Jim Schubert