Node.js"require"函数和参数

use*_*355 70 javascript require node.js

当我做:

lib = require('lib.js')(app)
Run Code Online (Sandbox Code Playgroud)

app实际歌厅通过呢?

在lib.js中:

exports = module.exports = function(app){}
Run Code Online (Sandbox Code Playgroud)

似乎没有,因为当我尝试做的不仅仅是(app),而是做:

lib = require('lib.js')(app, param2)
Run Code Online (Sandbox Code Playgroud)

和:

exports = module.exports = function(app, param2){}
Run Code Online (Sandbox Code Playgroud)

我没有params2.

我试图通过以下方式进行调试:

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

lib = require("lib.js")(params)
Run Code Online (Sandbox Code Playgroud)

但在lib.js中,当我尝试JSON.stringify收到此错误时:

"DEBUG: TypeError: Converting circular structure to JSON"
Run Code Online (Sandbox Code Playgroud)

Ray*_*nos 103

你打电话的时候 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;
};
Run Code Online (Sandbox Code Playgroud)

要么

// somefile
require("lib.js")(app, param2)
// lib.js
module.exports = function(app, param2) { }
Run Code Online (Sandbox Code Playgroud)

  • 只是嫉妒,因为你的答案更正确:( (13认同)

Jim*_*ert 18

您可能有一个未定义的值,您尝试传入.

举个例子,requires.js:

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

当你正确地调用它时,它可以工作:

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

如果您遇到语法错误,则会失败:

> var requires = require('./requires')(0,);
... var requires = require('./requires')(0,2);
... 
Run Code Online (Sandbox Code Playgroud)

如果您有一个未定义的对象,它不起作用:

> var requires = require('./requires')(0, undefined);
arguments: {"0":0}
Run Code Online (Sandbox Code Playgroud)

因此,我首先检查您的对象是否已正确定义(并在传入时正确拼写),然后检查您是否没有语法错误.