拦截所有Node的require调用

3

我正在尝试找出如何拦截所有Node的require调用,以便我可以记录它们。

已经有一些关于此问题的问题,但是在那里提出的建议方法都未能拦截所有的require调用,也就是说,我想要深入拦截require调用,包括在我的必需模块中进行的调用,以及它们的必需模块和其他模块。

到目前为止,我尝试了以下三种方法:

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);
};

但是它们都没有对我起作用。

我在运行 Electron v5 中的 Node.js v12。

1个回答

1

我尝试过 intercept-require,但它不能拦截所有的 require 调用。考虑到 require-hook 的工作方式类似,我想它对我也不起作用。 - Fabio Spampinato

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接