2014-12-15 2 views
0

У меня есть модуль, как показано нижеВыполнить модуль NodeJS с конкретными переменными впрыскивается

'use strict'; 

var val = GlobalVariable.someMethod(); 

... 
... 

module.exports = myExportedClass; 

Я зову его require('./myModule');. Но хотелось бы знать, можно ли динамически вводить GlobalVariable.

Я попробовал этот метод, хотя я знаю, что это не работает :)

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

Так что не сделал, потому что модуль будет выполняться в другой области. Есть ли другой способ, которым я могу передать свою собственную версию GlobalVariable при использовании require.

+0

Пожалуйста, объясните больше. Трудно понять, чего вы действительно хотите достичь здесь. – cbass

+0

Нет, вы не можете передать что-либо «требованию», чтобы ввести его в область модуля. Но вы можете просто экспортировать функцию с параметрами, которая затем вызывается с аргументами. – Bergi

+0

@Bergi Да, в настоящее время я использую то же самое, но мне сложно (поддерживать) нашу существующую базу кода. – Exception

ответ

1

Да, его можно вводить. Сделайте что-то вроде следующего:

module.exports = function(injectedObject) { 
    return { 
    doSomething: function() { 
     return injectedObject.something(); 
    } 
    } 
}; 
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; 
    }; 
Смежные вопросы