Exports ve module.exports Farkı Nedir ?

Sinan Alagöz
2 min readJan 16, 2022

--

Node js modül wrapper’ı aşağıdaki gibidir. (bkz. github)

NativeModule.wrapper = [
'(function (exports, require, module, __filename, __dirname) { ',
'\n});'
];

function, exports, module… bunlar sadece modül yüklendiğinde çağrılan fonksiyonun parametreleridir.

exports parametresi aslında module.exports ifadesinin kısayoludur. Başlangıçta module.exports ile exports aynı boş objeye işaret ederler.

exports veya module.exports ifadesini kullanarak dışarıya elemanlarınızı çıkarabilirsiniz. Örneğin exports.name= “Sinan” ve module.exports.lastName = “Alagöz” kullanımlarının ardından sonra modülün export ettiği obje şu olacaktır;

{name: "Sinan", lastName: "Alagöz"}

Yanlış Kullanım

exports = function example() {
console.log('example function');
}

Böyle bir kullanım yaparsanız artık exports ile module.exports arasındaki ilişkiyi kaldırırsınız. Yani artık exports ile module.exports aynı objeye bakmazlar. Bu kullanımda modüle default değer olan boş objeyi ({}) dışarı çıkarır.

Require ifadesi module.exports bakacağı için siz example fonksiyonuna diğer modüllerden erişemezsiniz

Çözüm

İlla böyle kullanacağım ve ben o değeri dışarı çıkaracam diyorsanız :) aşağıdaki yapıya benzer bir şeyler yapmanız lazım.

exports = module.exports = function () {/* ... */}
exports.name = "Sinan"

--

--

Sinan Alagöz
Sinan Alagöz

Written by Sinan Alagöz

I have been working as a software engineer for 4 years. I try to improve myself to become a better developer. I try to share what I have learned here.

No responses yet