Search code examples
javascriptnode.jsrequire

Override the require function


Is it possible to override the global require function, affecting it at process level?

From what I know, the require function is provided as argument in the function that wraps the NodeJS scripts:

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

Is there any way to modify the require function?

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

This will probably affect only the script where it's located.

How can we modify it at the process level?


Solution

  • var Module = require('module');
    var originalRequire = Module.prototype.require;
    
    Module.prototype.require = function(){
      //do your thing here
      return originalRequire.apply(this, arguments);
    };