Как изменить оболочку модуля NodeJS?

Опубликовано: 14 Декабря, 2021

Функция обертки модуля: внутри NodeJS не запускает наш код напрямую, он обертывает весь код внутри функции перед выполнением. Эта функция называется функцией оболочки модуля. Обратитесь к https://nodejs.org/api/modules.html#modules_the_module_wrapper за официальной документацией.

Перед тем, как код модуля будет выполнен, NodeJS заключает его в оболочку функции, которая имеет следующую структуру:

(функция (экспорт, требование, модуль, __filename, __dirname) {
  // код модуля
});

Использование функции оболочки модуля в NodeJS:

  1. Переменные верхнего уровня, объявленные с помощью var , const или let, относятся к модулю, а не к глобальному объекту.
  2. Он предоставляет некоторые глобальные переменные, специфичные для модуля, например:
    • Модуль и объект экспорта, который можно использовать для экспорта значений из модуля.
    • Такие переменные, как __filename и __dirname, сообщают нам абсолютное имя файла модуля и путь к его каталогу.

Изменение функции оболочки модуля: учтите, что у нас есть два файла: main.js и module.js. В main.js мы перезаписываем функцию Module.wrap, чтобы получить console.log ('modifedMWF'); каждый раз, когда требуется модуль. Теперь, если нам потребуется module.js, он будет содержать сообщение, подтверждающее успешность наших изменений.

  1. Это первый файл, который будет вызывать второй.

    main.js

    var Module = require( "module" );
    ( function (moduleWrapCopy) {
    Module.wrap = function (script) {
    script = "console.log('modifiedMWF');" + script;
    return moduleWrapCopy(script);
    };
    })(Module.wrap);
    require( "./module.js" );
  2. Это второй файл.

    module.js

    console.log( "Hello Geeks from module.js!" );

Вывод: Запустив main.js, мы получаем следующий вывод, подтверждающий успешное изменение функции Module Wrapper.

 узел main.js 

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