如何在node.js中要求一个文件并在请求方法中传递一个参数,但不传递给模块?

Tot*_*.js 22 require node.js

我有一个必须加载的module.js; 为了工作需要objectX;

如何将objectX传递给node.js提供的require方法中的module.js?

谢谢

// my module.js
objectX.add('abc');
// error: objectX is undefined
Run Code Online (Sandbox Code Playgroud)

我想要一种方法来做到这一点,而不必改变我所有的课程因为会花费很多时间......而且他们的方式对于客户端来说它具有良好的性能.(我将clientfiles与serverfiles混合***)

kgi*_*pin 46

您编写的模块可以导出单个函数.当您需要该模块时,请使用您的初始化参数调用该函数.该函数可以返回一个Object(hash),它放在require-ing模块中的变量中.换一种说法:

main.js

var initValue = 0;
var a = require('./arithmetic')(initValue);
// It has functions
console.log(a);
// Call them
console.log(a.addOne());
console.log(a.subtractOne());
Run Code Online (Sandbox Code Playgroud)

arithmetic.js:

module.exports = function(initValue) {
  return {
    addOne: function() {
      return initValue + 1;
    },
    subtractOne: function() {
      return initValue - 1;
    },
  }
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*ell 14

您可以通过链接"init"方法(根据需要将其命名)来避免更改实际导出的对象.

模块TestModule.js:

var x = 0; // Some private module data

exports.init = function(nx) {
    x = nx; // Initialize the data
    return exports;
};

exports.sayHi = function() {
    console.log("HELLO THERE "+x);
};
Run Code Online (Sandbox Code Playgroud)

然后要求它像这样:

var TM = require('./TestModule.js').init(20);
TM.sayHi();
Run Code Online (Sandbox Code Playgroud)