在module.exports中的一个函数中调用另一个函数,该函数被称为“local”。

8 浏览
0 Comments

在module.exports中的一个函数中调用另一个函数,该函数被称为“local”。

如何在一个module.exports声明中的另一个函数中调用一个函数?\napp.js\n

var bla = require('./bla.js');
console.log(bla.bar());

\nbla.js\n

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

\n我试图从函数bar内部访问函数foo,但是我得到了以下错误:\n

\nTypeError: Object # has no method \'foo\'\n

\n如果我将this.foo()更改为foo(),我得到的是:\n

\nReferenceError: foo is not defined\n

0
0 Comments

问题的原因是在module.exports中调用了一个本地函数,但在调用时出现了undefined的情况。解决方法是将本地函数导出为一个公共函数,然后在需要调用该函数的地方进行调用。

具体的解决方法是在module.exports中定义一个变量self,将module.exports赋值给self,并在self中定义需要导出的函数。然后在需要调用该函数的地方,使用self来调用。

下面是一个示例代码,展示了如何使用self来调用本地函数:

var self = module.exports = {
  foo: function (req, res, next) {
    return ('foo');
  },
  bar: function(req, res, next) {
    self.foo();
  }
}

这样,就可以在bar函数中通过self.foo()来调用foo函数。

需要注意的是,这种方法可能在不同的Node.js版本中有所差异,因此在使用时需要进行测试和确认。

0
0 Comments

问题的原因是在module.exports中的一个函数调用另一个函数时出现了TypeError。问题的解决方法是将函数声明移到module.exports之外,然后再将函数赋值给module.exports的属性。

以下是解决问题的代码示例:

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

通过将函数声明移到module.exports之外,然后再将函数赋值给module.exports的属性,可以解决函数调用的问题。

另外,在使用ES6的情况下,可以更简洁地将函数赋值给module.exports的属性:

module.exports = { foo, bar }

这样做可以达到相同的效果。

了解更多不同的代码风格和写法的比较,请参考这篇文章:gist.github.com/kimmobrunfeldt/10848413

0
0 Comments

问题的原因是在module.exports中的一个函数调用另一个函数时,使用了错误的语法。在JavaScript中,this关键字引用了当前对象,但在module.exports中,this关键字不起作用。

解决方法是将this.foo()改为module.exports.foo()。通过使用module.exports关键字,我们可以正确地调用module.exports中的另一个函数。这样做更加直观和易读。

以下是一些其他解决方法的评论:

- 使用exports.foo()调用函数似乎有点奇怪和难以阅读。

- 如果在exports范围之外定义函数,那么会增加额外的间接性。虽然有时候这样做是可取的,但它会使重构变得更加复杂,比如重命名函数或查找函数的用法等。

- 通过Node.js v5.8.0,exports.foo()不起作用,但module.exports.foo()起作用。

- 对我来说,这个方法起作用了,但是我不需要使用module.exports = {...},而是对每个导出的方法都使用exports.myFunction = function()。

- 如果只使用exports.foo,只能在exports变量引用module.exports对象的情况下工作。如果想要在module.exports对象内部的一个函数中引用foo,则使用module.exports.foo。

- 在module.exports中使用this关键字是行不通的。

可以从这些评论中看出,解决方法是使用module.exports关键字来调用模块中的另一个函数。这样做更加直观和易读,而且可以避免一些语法错误。

0