gpt4 book ai didi

javascript - 拦截所有 Node 的 require 调用

转载 作者:行者123 更新时间:2023-11-30 06:15:50 26 4
gpt4 key购买 nike

我正在尝试找出如何拦截所有 Node 的 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);
};

但它们都不适合我。

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

最佳答案

为了实现这样的事情(拦截所有 require 调用)很可能需要包装 Module.prototype.require

Module.prototype.require = wrapWithYOURInterceptor(params);

如您所见,这是在各种“拦截”require 库中完成的:

  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

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

关于javascript - 拦截所有 Node 的 require 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56203689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com