从模块内调用Node.js模块函数

Mic*_*ael 5 javascript module node.js node-modules

我正在尝试编写一个节点模块,以便清理我的代码并将其分成不同的文件.

考虑以下代码:

module.exports = {
    Hello : function(request, reply) {
        return reply("Hello " + World());
    },
    World : function() {
        return "World";
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我导入上面的模块并使用Hello函数作为特定路由的处理程序,我会收到HTTP 500内部服务器错误.

如果我将Hello函数更改为,我已将问题缩小到对World()的调用

Hello : function(request, reply) {
    return reply("Hello World");
}
Run Code Online (Sandbox Code Playgroud)

然后它工作正常,所以它似乎在从导出对象中调用另一个函数时被绊倒

有谁知道为什么会这样,以及如何解决它?

Ahm*_*awi 5

你应该这样称呼它:

module.exports = {
    Hello: function(request, reply) {
        return reply("Hello " + module.exports.World());
    },
    World: function() {
        return "World";
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您的目标是更干净的代码,我建议您将代码更改为:

function World() {
  return "World";
}
function Hello(request, reply) {
  return reply("Hello " + World());
}
module.exports = {
    Hello,
}
Run Code Online (Sandbox Code Playgroud)

这将使您的代码更具可读性,并且您将只导出您实际需要的内容。This question对您的问题有其他解决方案。