Wenn ich es tue:
lib = require('lib.js')(app)
wird app
tatsächlich übergeben?
in lib.js:
exports = module.exports = function(app){}
Scheint nein zu sein, denn wenn ich versuche, mehr als nur zu tun (app)
und stattdessen:
lib = require('lib.js')(app, param2)
Und:
exports = module.exports = function(app, param2){}
Ich verstehe nicht params2
.
Ich habe versucht zu debuggen, indem ich Folgendes getan habe:
params = {}
params.app = app
params.param2 = "test"
lib = require("lib.js")(params)
aber in lib.js, wenn ich versuche, JSON.stringify
bekomme ich diesen Fehler:
"DEBUG: TypeError: Converting circular structure to JSON"
javascript
node.js
require
user885355
quelle
quelle
Antworten:
Wenn du anrufst
lib = require("lib.js")(params)
Sie rufen tatsächlich
lib.js
mit einem Parameter auf, der zwei Eigenschaftsnamenapp
und enthältparam2
Sie wollen entweder
// somefile require("lib.js")(params); // lib.js module.exports = function(options) { var app = options.app; var param2 = options.param2; };
oder
// somefile require("lib.js")(app, param2) // lib.js module.exports = function(app, param2) { }
quelle
module.exports = function(options) { ....; return { fn1, fn2 }};
Dies funktioniert jedoch, gibt es einen besseren Weg?Möglicherweise haben Sie einen undefinierten Wert, den Sie übergeben möchten.
Nehmen Sie zum Beispiel
requires.js
:module.exports = exports = function() { console.log('arguments: %j\n', arguments); };
Wenn Sie es richtig aufrufen, funktioniert es:
node > var requires = require('./requires')(0,1,2,3,4,5); arguments: {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5}
Wenn Sie einen Syntaxfehler haben, schlägt dieser fehl:
> var requires = require('./requires')(0,); ... var requires = require('./requires')(0,2); ...
Wenn Sie ein undefiniertes Objekt haben, funktioniert es nicht:
> var requires = require('./requires')(0, undefined); arguments: {"0":0}
Ich würde also zuerst überprüfen, ob Ihr Objekt richtig definiert ist (und richtig geschrieben ist, wenn Sie es übergeben), und dann überprüfen, ob Sie keine Syntaxfehler haben.
quelle
util.inspect
inspizieren die meisten Leute Objekte (dies geschieht intern mitconsole.log
). Sie können auch Node-Inspector verwenden (siehe Artikel für das Video-Tutorial). Node-Inspector ist der Webkit-Inspector (wie STRG + UMSCHALT + J in Chrome), der abhörtnode --debug
.exports
und bindetmodule.exports
). Weitere Informationen finden Sie unter stackoverflow.com/a/13622513/151445 .