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

时间:2012-09-05 04:12:40

标签: javascript node.js

我有这个nodeJS代码。

module.exports = {

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

  bar: function(){
    ...
    ...
  }
}

我需要从bar()方法中调用foo()方法。我尝试了this.bar()以及bar(),但都没有说TypeError: Object #<Object> has no method 'bar()'

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

7 个答案:

答案 0 :(得分:8)

这样做:

module.exports = {

  foo: function(req, res){

    bar();

  },
  bar: bar
}

function bar() {
  ...
}

不需要关闭。

答案 1 :(得分:5)

接受的响应错误,您需要使用&#34; this&#34;从当前范围调用bar方法。关键字:

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

        this.bar();

      },
      bar: function() { console.log('bar'); }
    }

答案 2 :(得分:3)

我认为在传递回调之前你可以做的是bind上下文。

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

答案 3 :(得分:2)

试试这个:

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

        foo: function(){
            realBar();
        },

        bar: realBar
    };
}());

答案 4 :(得分:1)

尝试以下代码。您可以从任何地方引用每个函数(需要导入.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;

答案 5 :(得分:0)

条形图是针对foo的内部(私有)吗?

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

答案 6 :(得分:0)

在Node js + 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!