Кешируется ли модуль при подключении с помощью require в Node.js?

«Кешируется ли модуль при подключении с помощью require в Node.js?» — вопрос из категории Node.js Core, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, модуль кешируется после первого вызова require(). Node.js сохраняет его в кеше, и последующие вызовы require() для того же файла возвращают уже закешированный экземпляр. Это гарантирует, что модуль инициализируется только один раз, даже если он импортируется в разных частях приложения.

Пример:

// module.js
console.log('Module loaded');
module.exports = { data: 'test' };

// app.js
const first = require('./module'); // Выведет "Module loaded"
const second = require('./module'); // Ничего не выведет, вернет кеш
console.log(first === second); // true

Важно: кеш очищается при изменении файла (в dev-режиме) или при ручном удалении из require.cache.