Как изменить оболочку модуля NodeJS?
Функция обертки модуля: внутри NodeJS не запускает наш код напрямую, он обертывает весь код внутри функции перед выполнением. Эта функция называется функцией оболочки модуля. Обратитесь к https://nodejs.org/api/modules.html#modules_the_module_wrapper за официальной документацией.
Перед тем, как код модуля будет выполнен, NodeJS заключает его в оболочку функции, которая имеет следующую структуру:
(функция (экспорт, требование, модуль, __filename, __dirname) {
// код модуля
});
Использование функции оболочки модуля в NodeJS:
- Переменные верхнего уровня, объявленные с помощью var , const или let, относятся к модулю, а не к глобальному объекту.
- Он предоставляет некоторые глобальные переменные, специфичные для модуля, например:
- Модуль и объект экспорта, который можно использовать для экспорта значений из модуля.
- Такие переменные, как __filename и __dirname, сообщают нам абсолютное имя файла модуля и путь к его каталогу.
Изменение функции оболочки модуля: учтите, что у нас есть два файла: main.js и module.js. В main.js мы перезаписываем функцию Module.wrap, чтобы получить console.log ('modifedMWF'); каждый раз, когда требуется модуль. Теперь, если нам потребуется module.js, он будет содержать сообщение, подтверждающее успешность наших изменений.
- Это первый файл, который будет вызывать второй.
main.js
varModule = require("module");(function(moduleWrapCopy) {Module.wrap =function(script) {script ="console.log('modifiedMWF');"+ script;returnmoduleWrapCopy(script);};})(Module.wrap);require("./module.js"); - Это второй файл.
module.js
console.log("Hello Geeks from module.js!");
Вывод: Запустив main.js, мы получаем следующий вывод, подтверждающий успешное изменение функции Module Wrapper.
узел main.js

Окно вывода при запуске main.js