一尘不染

覆盖require函数

node.js

是否有可能覆盖 全局 require功能,从而在一定process程度上影响 全局 功能?

据我所知,该require函数在包装NodeJS脚本的函数中作为参数提供:

(function (..., require, __dirname) { // something like this
   // The wrapped code
})(...);

有什么方法可以修改require功能吗?

(function () {
    var _require = require;
    require = function () {
        console.log("...");
        _require.apply(this, arguments);
    };
})();

这可能只会影响脚本所在的脚本。

我们如何在流程级别进行修改?


阅读 239

收藏
2020-07-07

共1个答案

一尘不染

var Module = require('module');
var originalRequire = Module.prototype.require;

Module.prototype.require = function(){
  //do your thing here
  return originalRequire.apply(this, arguments);
};
2020-07-07