我有一个像下面的模块

'use strict';

var val = GlobalVariable.someMethod();

...
...

module.exports = myExportedClass;


我用require('./myModule');称呼它。但是想知道GlobalVariable是否可以动态注入。

我试过这种方法,尽管我知道这不起作用:)

(function(GlobalVariable) {
    require('./myModule');
})(SomeOtherGlobalVariable);


因此它没有,因为模块将在不同的范围内执行。还有其他任何方法可以在使用require时传递我自己的GlobalVariable版本。

最佳答案

是的,可以注射。执行以下操作:

module.exports = function(injectedObject) {
  return {
    doSomething: function() {
      return injectedObject.something();
    }
  }
};

07-24 09:51