NodeJS requiere función

Estaba inspeccionando el módulo global y de nodo cuando descubrí que el requisito no estaba en ellos. No sé si esto es mágico, pero si alguien puede explicar si require es global, ¿por qué no está en el objeto global ni en el objeto de módulo?

Porque está en el scope . Al cargar en un archivo, el nodo detrás de escena envuelve el código fuente de manera que su código realmente se vea así:

(function (exports, require, module, __filename, __dirname) { // here goes what's in your js file }); 

Luego invoca la función anónima, pasando un objeto nuevo para las exports y una referencia a la función require . ( Más detalles aquí ) .

Ahora debería ser obvio por qué puede llamar a require aunque no sea verdaderamente global.

Require es Core Modules comstackdos en el binario. Lea con más detalle aquí http://nodejs.org/api/modules.html#modules_core_modules .

Los módulos principales se definen en la fuente del nodo en la carpeta lib /.

Los módulos básicos siempre se cargan preferentemente si su identificador se pasa a require (). Por ejemplo, require (‘http’) siempre devolverá el módulo HTTP incorporado, incluso si hay un archivo con ese nombre.