bootstrap: provide usable error on missing internal module
Due to how bootstrap/loaders.js itself is loaded and invoked, stacktraces from it are munged and no longer point back to the error source. That resulted in the following unhelpful error if an internal module was missing or misnamed: ``` internal/bootstrap/loaders.js:190 return mod.compile(); ^ TypeError: Cannot read property 'compile' of undefined ``` This changes that to at least print the id that was attempted to be loaded: ``` internal/bootstrap/loaders.js:189 if (!mod) throw new TypeError(`Missing internal module '${id}'`); ^ TypeError: Missing internal module 'internal/a' ``` PR-URL: https://github.com/nodejs/node/pull/29593 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
This commit is contained in:
parent
9fb8b8d0f7
commit
4d798e1b1b
@ -186,6 +186,9 @@ function nativeModuleRequire(id) {
|
||||
}
|
||||
|
||||
const mod = NativeModule.map.get(id);
|
||||
// Can't load the internal errors module from here, have to use a raw error.
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
if (!mod) throw new TypeError(`Missing internal module '${id}'`);
|
||||
return mod.compile();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user