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

问题描述 投票:7回答:4

您如何从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
    }
}

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

javascript node.js model-view-controller express
4个回答
18
投票

我找到了解决方案:-)

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

    getName : function(data) {
        // code
    }
}

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
    }
}

8
投票

也许您可以这样做。它减少嵌套。并且所有导出操作都在文件末尾完成。

"use strict";

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

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

module.exports = {
    getName : _getName,
    myName : _myName
};

0
投票

如果您想在其他文件中本地使用该功能...

function myFunc(){
    return 'got it'
}
module.exports.myFunc = myFunc;
© www.soinside.com 2019 - 2024. All rights reserved.