当我这样做时:
lib = require('lib.js')(app)
实际上传递的是app
吗?
:
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)
但是当我尝试JSON.stringify
时,我在lib.js中收到此错误:
"DEBUG: TypeError: Converting circular structure to JSON"
答案 0 :(得分:97)
致电lib = require("lib.js")(params)
您实际上是使用一个包含两个属性名称lib.js
和app
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) { }
答案 1 :(得分:18)
您可能有一个未定义的值,您尝试传入。
以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}
因此,我首先检查您的对象是否已正确定义(并在传入时正确拼写),然后检查您是否没有语法错误。