MCPcopy Index your code
hub / github.com/nodejs/node / makeRequireFunction

Function makeRequireFunction

lib/internal/modules/helpers.js:183–243  ·  view source on GitHub ↗

* Create the module-scoped `require` function to pass into CommonJS modules. * @param {Module} mod - The module to create the `require` function for. * @returns {function(string): unknown}

(mod)

Source from the content-addressed store, hash-verified

181 * @returns {function(string): unknown}
182 */
183function makeRequireFunction(mod) {
184 // lazy due to cycle
185 const Module = lazyModule();
186 if (mod instanceof Module !== true) {
187 throw new ERR_INVALID_ARG_TYPE('mod', 'Module', mod);
188 }
189
190 function require(path) {
191 return mod.require(path);
192 }
193
194 /**
195 * The `resolve` method that gets attached to module-scope `require`.
196 * @param {string} request
197 * @param {Parameters<Module['_resolveFilename']>[3]} options
198 * @returns {string}
199 */
200 function resolve(request, options) {
201 validateString(request, 'request');
202 const { resolveForCJSWithHooks } = lazyCJSLoader();
203 // require.resolve() has different behaviors from the internal resolution used by
204 // Module._load:
205 // 1. When the request resolves to a non-existent built-in, it throws MODULE_NOT_FOUND
206 // instead of UNKNOWN_BUILTIN_MODULE. This is handled by resolveForCJSWithHooks.
207 // 2. If the request is a prefixed built-in, the returned value is also prefixed. This
208 // is handled below.
209 const { filename, url } = resolveForCJSWithHooks(
210 request, mod, /* isMain */ false, {
211 __proto__: null,
212 shouldSkipModuleHooks: false,
213 requireResolveOptions: options ?? {},
214 });
215 if (url === request && StringPrototypeStartsWith(request, 'node:')) {
216 return url;
217 }
218 return filename;
219 }
220
221 require.resolve = resolve;
222
223 /**
224 * The `paths` method that gets attached to module-scope `require`.
225 * @param {string} request
226 * @returns {object}
227 */
228 function paths(request) {
229 validateString(request, 'request');
230 return Module._resolveLookupPaths(request, mod);
231 }
232
233 resolve.paths = paths;
234
235 setOwnProperty(require, 'main', process.mainModule);
236
237 // Enable support to add extra extension types.
238 require.extensions = Module._extensions;
239
240 require.cache = Module._cache;

Callers 4

createContextMethod · 0.85
loader.jsFile · 0.85
createRequireFromPathFunction · 0.85
installConsoleExtensionsFunction · 0.85

Calls 2

lazyModuleFunction · 0.85
setOwnPropertyFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…