require('http')
console.log(require.cache.http) // undefined
I can't find the http
module in require.cache
? How can I detect it was required? I found process.moduleLoadList
that contains the string NativeModule http
but don't see any reference to the cached module where is it ?
NativeModule
means it's not cached: it's compiled. It's defined like this,
NativeModule: a minimal module system used to load the JavaScript core modules found in
lib/**/*.js
anddeps/**/*.js
. All core modules are compiled into the node binary vianode_javascript.cc
generated byjs2c.py
, so they can be loaded faster without the cost of I/O. This class makes thelib/internal/*
,deps/internal/*
modules andinternalBinding()
available by default to core modules, and lets the core modules require itself viarequire('internal/bootstrap/loaders')
even when this file is not written in CommonJS style.
Emphasis added around "without the cost of I/O" so no caching needed.
You can find this system in lib/internal/bootstrap/loaders.js
. You can find the mapping of native modules to source code here, but remember they're not read from disk. You can find js2c.py