执行注入特定变量的NodeJS模块

时间:2014-12-15 19:01:22

标签: javascript node.js requirejs

我有一个类似下面的模块

'use strict';

var val = GlobalVariable.someMethod();

...
...

module.exports = myExportedClass;

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

我尝试过这种方法,虽然我知道这不起作用:)

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

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

2 个答案:

答案 0 :(得分:1)

是的,可以注射。做类似以下的事情:

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

答案 1 :(得分:0)

你可以在需要时将变量作为参数传递

yourvariable="value";
var file = require('./myModule')(yourvariable);

或者可以单独传递,因为文件现在包含module.exports的函数引用

yourvariable="value";
var file = require('./myModule');
file(yourvariable)

您的模块将如下所示:

   module.exports = function(yourVaraible) {

        yourVaraible.myfunction =  function() {

        };
      return yourvariable;
    };
相关问题