Create error class for cache store errors

This commit is contained in:
Tobias Koppers 2019-12-16 14:50:10 +01:00
parent 5d18a8e27d
commit f12b8abcc0
2 changed files with 46 additions and 1 deletions

View File

@ -36,6 +36,7 @@ const ModuleGraph = require("./ModuleGraph");
const ModuleNotFoundError = require("./ModuleNotFoundError");
const ModuleProfile = require("./ModuleProfile");
const ModuleRestoreError = require("./ModuleRestoreError");
const ModuleStoreError = require("./ModuleStoreError");
const ModuleTemplate = require("./ModuleTemplate");
const RuntimeGlobals = require("./RuntimeGlobals");
const RuntimeTemplate = require("./RuntimeTemplate");
@ -952,7 +953,7 @@ class Compilation {
}
if (err) {
this.hooks.failedModule.call(module, err);
return callback(err);
return callback(new ModuleStoreError(module, err));
}
this.hooks.succeedModule.call(module);
return callback();

44
lib/ModuleStoreError.js Normal file
View File

@ -0,0 +1,44 @@
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict";
const WebpackError = require("./WebpackError");
/** @typedef {import("./Module")} Module */
class ModuleStoreError extends WebpackError {
/**
* @param {Module} module module tied to dependency
* @param {string | Error} err error thrown
*/
constructor(module, err) {
let message = "Module storing failed: ";
let details = undefined;
if (err !== null && typeof err === "object") {
if (typeof err.stack === "string" && err.stack) {
const stack = err.stack;
message += stack;
} else if (typeof err.message === "string" && err.message) {
message += err.message;
} else {
message += err;
}
} else {
message += String(err);
}
super(message);
this.name = "ModuleStoreError";
this.details = details;
this.module = module;
this.error = err;
Error.captureStackTrace(this, this.constructor);
}
}
module.exports = ModuleStoreError;