如何在node.js中为导出的类方法设置全局变量

时间:2017-09-25 17:26:40

标签: node.js require

我有多个不同的文件如下:

index.js
utils.js
ClassA/
  index.js
  base.js

utils包含许多在任何地方使用的实用程序函数。 ClassA / index.js包含ClassA的构造函数以及需要base.js,然后导出ClassA。 Base.js导出ClassA的原型方法。这基本上就是它们的样子:

//ClassA/index.js
function ClassA () {
  //constructor stuff
}
ClassA.prototype.constructor = ClassA;
require('./base')(ClassA);
module.exports = ClassA;

//ClassA/base.js
module.exports = ClassA => {
ClassA.prototype.aMethod = function () {
  log('hello');
}

//utils.js
module.exports = {
  log : function (logText) {
    //dostuff
  }
}

所以我的问题是我无法从ClassA/base.js中的方法中访问日志功能。如果我在文件顶部设置const log = require('../utils').log,则不起作用。如果我在导出中但在方法定义之外放置相同的代码行,它也不起作用,但是如果我将它放在方法本身中它会起作用(正如预期的那样,但这意味着复制任何需要的语句)它需要的方法)。有没有办法使用这种杂乱和重复的路线?

1 个答案:

答案 0 :(得分:0)

这是循环依赖的问题。我将'log'更改为ClassA的方法,这解决了这个问题。感谢Francois P.指出我正确的方向。