NodeJS-从同一文件中的另一个方法调用一个方法

Node JS - Calling a method from another method in same file

本文关键字:方法 调用 一个 文件 NodeJS- 另一个      更新时间:2023-09-26

我有这个nodeJS代码。

module.exports = {
  foo: function(req, res){
    ...
    this.bar(); // failing
    bar(); // failing
    ...
  },
  bar: function(){
    ...
    ...
  }
}

我需要从foo()方法内部调用bar()方法。我试过this.bar()bar(),但都说不出TypeError: Object #<Object> has no method 'bar()'

如何从另一个方法调用一个方法?

您可以这样做:

module.exports = {
  foo: function(req, res){
    bar();
  },
  bar: bar
}
function bar() {
  ...
}

无需关闭。

接受的响应是错误的,您需要使用"this"关键字从当前范围调用bar方法:

    module.exports = {
      foo: function(req, res){
        this.bar();
      },
      bar: function() { console.log('bar'); }
    }

我认为您可以做的是在传递回调之前绑定上下文。

something.registerCallback(module.exports.foo.bind(module.exports));

试试这个:

module.exports = (function () {
    function realBar() {
        console.log('works');
    }
    return {
        foo: function(){
            realBar();
        },
        bar: realBar
    };
}());

尝试以下代码。您可以从任何地方引用每个函数(需要导入.js文件)

function foo(req,res){
    console.log("you are now in foo");
    bar();
}
exports.foo = foo;
function bar(){
    console.log("you are now in bar");
}
exports.bar = bar;

bar是否是foo的内部(私有)?

module.exports = {
    foo: function(req, res){
        ...
        function bar() {
            ...
            ...
        }
        bar();     
        ...
    }
}

在Nodejs+Express中,您可以在同一控制器中使用此语法

//myController.js
exports.funA = () =>{
    console.log("Hello from funA!")
    //cal funB
    funB()
}
let funB = () =>{
    console.log("Hello from funB!")
}

请确保在函数之前使用let关键字,并使用主函数内的()括号进行调用

输出

App listening at http://localhost:3000
Hello from fun A!
Hello from fun B!