2015-02-15 2 views
-1

Я все еще новичок в NodeJS и JavaScript. У меня есть модуль которым возвращает объект, например, так: используетсяПередача параметров модулям NodeJS, возвращающим объект

module.exports = (function() { 
... 
return obj; 
})(); 

модуль, и я не хочу, чтобы сломать существующий код. Но теперь я хочу добавить возможность передать объект options в модуль. Что я могу сделать?

ответ

2

Вы производите функцию самозапускания, когда вам нужен ваш модуль, он сам будет сам вызывать себя и возвращать ваш объект. почему бы вам не просто экспортировать функцию, как показано ниже:

module.exports = function (options) { 
    //use your options here 
    console.log(options); 
    ..... 
    return obj; 
}; 

Тогда при использовании этого модуля просто сделать это таким образом:

var whatever = require('./moduleName')({options:'Object here'}); 

Так что это будет также вызывать ваш модуль и присвоить значение любой переменной вы назначаете его. Теперь вы можете использовать объект options внутри вашей функции.

+1

Спасибо, но причина, по которой я не хочу этого делать, объясняется в вопросе: я не хочу нарушать существующий код, если это возможно –

+0

Я боюсь, что это может быть невозможно, потому что ваша функция самозапуска возвращая объект. и объект не сможет принимать параметры. Вам нужно будет либо экспортировать функцию, либо вернуть функцию из своей функции self-invoking вместо объекта, чтобы иметь возможность использовать параметры в качестве параметра. – Yalamber

+0

Еще раз спасибо. Может быть, я могу добавить новое свойство в process.env? Но я не могу найти способ сделать это ... (он становится пустым объектом) –

0

Что я могу сделать?

Ваш единственный выбор - сделать экспортируемый объект вызываемым, то есть вам нужно вернуть функцию. Конечно, эта функция может иметь те же свойства, что и у вашего obj, так что она по-прежнему работает с унаследованным импортом.