Node.js“需要”function和参数

当我做:

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

我试图通过执行debugging:

 params = {} params.app = app params.param2 = "test" lib = require("lib.js")(params) 

但在lib.js,当我尝试JSON.stringify我得到这个错误:

 "DEBUG: TypeError: Converting circular structure to JSON" 

当你调用lib = require("lib.js")(params)

你实际上调用lib.js与一个参数包含两个属性名称appparam2

你要么

 // 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) { } 

你可能有一个未定义的值,你试图通过。

举个例子, 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} 

所以,我首先检查你的对象是否被正确定义(当你传入时拼写正确),然后检查你没有语法错误。