debug-require: Throw errors for unknown and unloaded modules.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2020-07-28 18:23:47 -07:00
committed by Tim Abbott
parent 11b0303d55
commit d5d6e43453
2 changed files with 17 additions and 3 deletions

View File

@@ -86,7 +86,11 @@ export default class DebugRequirePlugin {
source,
`${requireFn}(${JSON.stringify(
debugRequireId,
)}).initialize(${JSON.stringify(Object.fromEntries(ids), null, "\t")});`,
)}).initialize(${JSON.stringify(
Object.fromEntries(ids),
null,
"\t",
)}, modules);`,
]);
},
);

View File

@@ -1,11 +1,21 @@
/* global __webpack_require__ */
let webpackModules;
function debugRequire(request) {
return __webpack_require__(debugRequire.ids[request]);
if (!Object.prototype.hasOwnProperty.call(debugRequire.ids, request)) {
throw new Error("Cannot find module '" + request + "'");
}
const moduleId = debugRequire.ids[request];
if (!Object.prototype.hasOwnProperty.call(webpackModules, moduleId)) {
throw new Error("Module '" + request + "' has not been loaded yet");
}
return __webpack_require__(moduleId);
}
debugRequire.initialize = function (ids) {
debugRequire.initialize = function (ids, modules) {
debugRequire.ids = ids;
webpackModules = modules;
};
module.exports = debugRequire;