将公共变量传递给Node.js中的模块

时间:2014-10-30 11:14:36

标签: javascript node.js module

我想在node.js中创建一个包含两个函数的模块 我还需要一个共同的对象来使用所有的功能。
我尝试了以下语法,但它似乎不起作用:

module.exports = function(obj) {
    func1: function(...) {

    },
    func2: function(...) {

    }
}

obj是我希望函数使用的公共对象。

3 个答案:

答案 0 :(得分:3)

您需要返回函数对象:

module.exports = function(obj) {
    return {
        func1: function(...) {

        },
        func2: function(...) {

        }
    };
};

用法:

var commonObj = { foo: 'bar' };
var myModule = require('./my-module')(commonObj);

答案 1 :(得分:1)

module.exports只是require调用返回的对象。

你可以:

var commonObj = require('myObj');

module.exports = {
  func1: function(commonObj) {...},
  func2: function(commonObj) {...}
};

答案 2 :(得分:1)

您正尝试在函数中使用对象语法。因此要么将函数转换为return函数,要么只使用对象并导出它。要传递一个参数,你需要像init函数那样的东西。

var obj = {

  init: function (name) {
    this.name = name;
    return this;
  },

  func1: function () {
    console.log('Hallo ' + this.name);
    return this;
  },

  func2: function () {
    console.log('Goodbye ' + this.name);
    return this;
  }

};

module.exports = obj;

然后使用init方法将其导入另一个文件中。请注意return this的使用 - 这允许您的方法被链接。

var variable = require('./getVariable'); // David
var obj = require('./testfile').init(variable);

obj.func1(); // Hallo David
obj.func2(); // Goodbye David