web-dev-qa-db-ja.com

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"
68
user885355

lib = require("lib.js")(params)を呼び出すとき

実際に呼び出しているのはlib.jsappおよび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) { }
102
Raynos

渡そうとしている未定義の値がある可能性があります。

たとえば、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);
... 

未定義のオブジェクトがある場合、動作しません:

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

そのため、最初にオブジェクトが適切に定義されていることを確認し(そして、オブジェクトを渡すときに適切に綴られていることを確認します)、次に構文エラーがないことを確認します。

18
Jim Schubert