Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 773
Ionică Bizău Avatar asked Jan 14 '15 16:01

Ionică Bizău


People also ask

What is require () in JavaScript?

1) require() require() statement basically reads a JavaScript file, executes it, and then proceeds to return the export object. require() statement not only allows to add built-in core NodeJS modules but also community-based and local modules.

How do you resolve require is not defined?

To solve the "ReferenceError require is not defined" error, remove the type property if it's set to module in your package. json file and rename any files that have a . mjs extension to have a . js extension.

What is require main === module?

When a file is run directly from Node. js, require. main is set to its module. That means that it is possible to determine whether a file has been run directly by testing require. main === module .


1 Answers

var Module = require('module'); var originalRequire = Module.prototype.require;  Module.prototype.require = function(){   //do your thing here   return originalRequire.apply(this, arguments); }; 
like image 119
orourkedd Avatar answered Sep 22 '22 18:09

orourkedd