Fix plugin error and lazy webpack
This commit is contained in:
parent
5285c950d0
commit
2bf7c4386f
|
@ -127,7 +127,7 @@ export default new class PluginManager extends AddonManager {
|
||||||
return addon;
|
return addon;
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
return new AddonError(addon.name || addon.filename, module.filename, "Plugin could not be compiled", {message: err.message, stack: err.stack}, this.prefix);
|
throw new AddonError(addon.name || addon.filename, module.filename, "Plugin could not be compiled", {message: err.message, stack: err.stack}, this.prefix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -324,21 +324,29 @@ export default class WebpackModules {
|
||||||
const fromCache = this.getModule(filter);
|
const fromCache = this.getModule(filter);
|
||||||
if (fromCache) return Promise.resolve(fromCache);
|
if (fromCache) return Promise.resolve(fromCache);
|
||||||
|
|
||||||
|
const wrappedFilter = (exports) => {
|
||||||
|
try {
|
||||||
|
return filter(exports);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
if (!hasThrown.has(filter)) Logger.warn("WebpackModules~getModule", "Module filter threw an exception.", filter, err);
|
||||||
|
hasThrown.add(filter);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const cancel = () => {this.removeListener(listener);};
|
const cancel = () => this.removeListener(listener);
|
||||||
const listener = function (mod) {
|
const listener = function(exports) {
|
||||||
const directMatch = filter(mod);
|
if (!exports) return;
|
||||||
|
|
||||||
|
let foundModule = null;
|
||||||
|
if (exports.__esModule && exports.default && wrappedFilter(exports.default)) foundModule = defaultExport ? exports.default : exports;
|
||||||
|
if (wrappedFilter(exports)) foundModule = exports;
|
||||||
|
if (!foundModule) return;
|
||||||
|
|
||||||
if (directMatch) {
|
|
||||||
cancel();
|
|
||||||
return resolve(directMatch);
|
|
||||||
}
|
|
||||||
|
|
||||||
const defaultMatch = filter(mod.default);
|
|
||||||
if (!defaultMatch) return;
|
|
||||||
|
|
||||||
cancel();
|
cancel();
|
||||||
resolve(defaultExport ? mod.default : mod);
|
resolve(protect(foundModule));
|
||||||
};
|
};
|
||||||
|
|
||||||
this.addListener(listener);
|
this.addListener(listener);
|
||||||
|
|
Loading…
Reference in New Issue