in src/core/moduleManager.ts [637:676]
private _onLoadError(moduleId: ModuleId, err: any): void {
const error = this._createLoadError(moduleId, err);
if (!this._modules2[moduleId]) {
this._modules2[moduleId] = new Module(moduleId, this._moduleIdProvider.getStrModuleId(moduleId), [], () => {}, null, null);
}
// Find any 'local' error handlers, walk the entire chain of inverse dependencies if necessary.
let seenModuleId: boolean[] = [];
for (let i = 0, len = this._moduleIdProvider.getMaxModuleId(); i < len; i++) {
seenModuleId[i] = false;
}
let someoneNotified = false;
let queue: ModuleId[] = [];
queue.push(moduleId);
seenModuleId[moduleId] = true;
while (queue.length > 0) {
let queueElement = queue.shift()!;
let m = this._modules2[queueElement];
if (m) {
someoneNotified = m.onDependencyError(error) || someoneNotified;
}
let inverseDeps = this._inverseDependencies2[queueElement];
if (inverseDeps) {
for (let i = 0, len = inverseDeps.length; i < len; i++) {
let inverseDep = inverseDeps[i];
if (!seenModuleId[inverseDep]) {
queue.push(inverseDep);
seenModuleId[inverseDep] = true;
}
}
}
}
if (!someoneNotified) {
this._config.onError(error);
}
}