NodeJS – 导出多个function

我正在尝试构build我的第一个NodeJS模块。 这就是我所做的:

var text = function(){ this.padRight = function(width, string, padding){ return (width <= string.length) ? string : this.padRight(width, string + padding, padding); }; this.cleanText = function(text){ if (typeof text !== 'undefined') { return text.replace(/(\r\n|\n|\r)/gm,""); } return null; }; this.printOut = function(outputObj){ var module = this, output = ""; outputObj.forEach(function(obj){ switch(obj.type){ case "date" : var date = obj.contents; if(typeof date != "undefined") output += date.toString().substring(4, 25) + "\t"; break; case "string": var string = obj.contents; if(typeof string != "undefined"){ string = module.cleanText(string); if(typeof obj.substring != "undefined" && obj.substring != 0) { string = string.substring(0, obj.substring); } if(typeof obj.padRight != "undefined" && obj.padRight != 0) { string = module.padRight(15, string, " "); } output += string + "\t"; } break; } }); console.log(output); }; }; module.exports.text = text; 

我想要有不同types的助手,所以我想能够这样调用这个模块:

 require("helpers"); helpers.text.printOut(); 

但是我得到一个错误。

如何在同一个模块中导出不同的函数并分别调用它们?

谢谢

问题是text本身是一个函数,它看起来像我想要出口一个text实例 ,而不是函数本身,即

 module.exports.text = new text(); 

你的代码有点混乱,因为你正在定义一个你正在导出的构造函数(正如James指出的那样)。 这是令人困惑的,因为在JS中习惯性地写build设者的资本。

我会build议,虽然是一个不同于James的解决scheme,即不导出新的Text(),而是导出构造函数本身。 在需要此对象的模块中,将该模块导入为var Text = require('./text'); 并执行新的Text()部分。 导出新的Text()有一个缺点,那就是你有效地创build了一个单例,这可能也可能不是你的意图。 请记住,模块上的require()只能被有效地执行一次,而当不同的模块加载上面描述的模块时,它们是同一个对象。