Node JS在module.exports中调用"本地"函数

sra*_*vis 7 javascript model-view-controller node.js express

如何从module.exports声明中的另一个函数中调用函数?

我有MVC结构节点js项目和一个名为TestController.js的控制器.我想访问控制器中的方法,但使用this关键字给出以下错误:

无法调用未定义的方法getName

"use strict"
module.exports = {
    myName : function(req, res, next) {
        // accessing method within controller
        this.getName(data);
    },

    getName : function(data) {
        // code
    }
}
Run Code Online (Sandbox Code Playgroud)

如何访问控制器中的方法?

sra*_*vis 18

我找到了解决方案:-)

"use strict"
var self = module.exports = {
    myName : function(req, res, next) {
        // accessing method within controller
        self.getName(data);
    },

    getName : function(data) {
        // code
    }
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*dus 11

您可以访问getName功能槽module.exports.像这样:

"use strict"
module.exports = {
    myName : function(req, res, next) {
        // accessing method within controller
        module.exports.getName(data);
    },

    getName : function(data) {
        // code
    }
}
Run Code Online (Sandbox Code Playgroud)


sev*_*ien 8

也许你可以这样做.它减少了嵌套.您的所有导出都在文件末尾完成.

"use strict";

var _getName = function() {
    return 'john';
};

var _myName = function() {
    return _getName();
};

module.exports = {
    getName : _getName,
    myName : _myName
};
Run Code Online (Sandbox Code Playgroud)