Javascript NodeJS-导出多个函数

Javascript NodeJS-导出多个函数,javascript,node.js,Javascript,Node.js,我正在尝试构建我的第一个NodeJS模块。 这就是我正在做的: var text = function(){ this.padRight = function(width, string, padding){ return (width <= string.length) ? string : this.padRight(width, string + padding, padding); }; this.cleanText = function(t

我正在尝试构建我的第一个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;
但是我犯了一个错误

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


谢谢

问题在于
文本
本身就是一个函数,在我看来,您想要导出的是
文本
的实例,而不是函数本身,即

module.exports.text = new text();

您的代码有些混乱,因为您正在定义一个构造函数,您正在导出它(正如James所指出的)。这是令人困惑的,因为在JS中使用大写字母编写构造函数是一种习惯

我建议使用与James不同的解决方案,即不导出新的Text(),而是导出构造函数本身。 在需要此对象的模块中,将此模块作为
var Text=require('./Text')导入并执行新文本()部分。导出新文本()有一个缺点,就是您实际上创建了一个单例,这可能是您的意图,也可能不是。
请记住,模块上的require()实际上只执行一次,当不同的模块加载上述模块时,它们是相同的对象

module.exports.text = new text();