拦截所有Node的require呼叫

时间:2019-05-18 23:41:11

标签: javascript node.js require

我试图弄清楚如何拦截所有Node的EXISTS调用,以便我可以记录它们。

已经有一些问题,但是那里建议的方法无法拦截我的 all 要求调用,即我想深入拦截要求的调用,还有那些在我所需的模块及其所需的模块等内部。

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

$('#grid1').on( "click", "td:not(:nth-child(2))", function (e) {
      var rowIdx = table.row( this ).index();
      var sData = table.cells({ row: rowIdx, column: 5 }).data()[0];
      if (sData && sData.length) {
        location.href = './test.php?id=' + sData;
      }
    });
require
const _req = require;
global.require = function () {
  console.log ( 'require', arguments );
  return _req.apply ( this, arguments );
};

但是他们都没有为我工作。

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

1 个答案:

答案 0 :(得分:0)

要实现这样的目标(Intercept all require calls),很可能需要包装Module.prototype.require

Module.prototype.require = wrapWithYOURInterceptor(params);

您可以在各种“拦截” require库中完成此操作,如您所见:

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

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

您也可以只使用这些库,而不必使用新的库等。