Roman159,
Либо я тебя не понял, либо ты не совсем понимаешь о чем ты говоришь
Тебе не надо ничего никуда передавать. У тебя main2 инициируется в main, соответственно, твоя глобальная переменная и так будет доступна для кода, загруженного из main2, только объявляй ее без var в main. Но напрямую пользоваться глобальными переменными из других модулей -- это вобще-то не очень хорошая идея. Модуль он на то и модуль, чтобы быть независимым от чужих/других неймспейсов.
Лучше делай вот так:
main1:
var main1={
init: function(o){for(var i in o) {if(!o.hasOwnProperty(i)) return; this[i]=o[i]}},
f: function(val){console.log(val+this.x)}
}
module.exports=main1
main:
x=1
main1=require("./main1")
main1.init({x: x})
main1.f(2) // --> 3