Чем отличается использование module.exports от свойства exports в Node.js при экспортировании модулей?

В Node.js module.exports и exports связаны с экспортом модулей, но работают немного по-разному.

Короткий ответ

Что ответить на собеседовании

В Node.js module.exports и exports связаны с экспортом модулей, но работают немного по-разному.

Подробный разбор

Ответ с пояснениями

В Node.js module.exports и exports связаны с экспортом модулей, но работают немного по-разному.

  • module.exports — это объект, который фактически возвращается при импорте модуля.
  • exports — это просто ссылка на module.exports по умолчанию.

Если вы присваиваете новое значение exports, то связь с module.exports теряется, и экспорт не сработает как ожидается.

Пример правильного использования:

// Добавление свойств к exports
exports.foo = function() { return 'foo'; };

// Или замена всего экспорта
module.exports = function() { return 'bar'; };

Если написать так, то экспорт не сработает:

exports = function() { return 'bar'; }; // НЕ ПРАВИЛЬНО

Потому что exports теперь указывает на новую функцию, но module.exports остаётся прежним объектом, который и экспортируется.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее