Перехватить все требуемые вызовы узла - PullRequest
1 голос
/ 19 мая 2019

Я пытаюсь выяснить, как перехватить все вызовы require узла, чтобы я мог их регистрировать.

Есть несколько вопросов по этому поводу, но предложенные методы не позволяют перехватить все требуют вызовов для меня, то есть я хочу глубоко перехватить вызовы, такжете, что сделаны внутри моих необходимых модулей, и их необходимые модули и т. д.

До сих пор я пробовал следующие 3 метода:

const _req = require;
global.require = function () {
  console.log ( 'require', arguments );
  return _req.apply ( this, arguments );
};
const Module = require ( 'module' );
const _load = Module._load;
Module._load = function () {
  console.log ( 'require', arguments );
  return _load.apply ( this, arguments );
};
const Module = require ( 'module' );
const _wrap = Module.wrap;
Module.wrap = function(script) {
  const prepend = `console.log ( module.id );`;
  script = prepend + script;
  return _wrap(script);
};

Но ни один изони работали для меня.

Я нахожусь под Node.js v12, работающим внутри Electron v5.

1 Ответ

0 голосов
/ 19 мая 2019

Чтобы достичь чего-то подобного (Intercept all require calls), скорее всего, потребуется обернуть Module.prototype.require.

Module.prototype.require = wrapWithYOURInterceptor(params);

Это делается в различных «перехватах» require libs, как вы можете видеть:

  1. intercept-require : https://github.com/bttmly/intercept-require/blob/master/lib/index.js

  2. require-hook : https://bitbucket.org/ralphv/require-hook/src/master/lib/requireHook.js

Вы также можете просто использовать эти библиотеки вместо того, чтобы приступать кновая библиотека и т. д.

...