UNPKG

1.68 kBJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5
6"use strict";
7
8const { cutOffLoaderExecution } = require("./ErrorHelpers");
9const WebpackError = require("./WebpackError");
10const makeSerializable = require("./util/makeSerializable");
11
12class ModuleBuildError extends WebpackError {
13 /**
14 * @param {string | Error&any} err error thrown
15 * @param {{from?: string|null}} info additional info
16 */
17 constructor(err, { from = null } = {}) {
18 let message = "Module build failed";
19 let details = undefined;
20
21 if (from) {
22 message += ` (from ${from}):\n`;
23 } else {
24 message += ": ";
25 }
26
27 if (err !== null && typeof err === "object") {
28 if (typeof err.stack === "string" && err.stack) {
29 const stack = cutOffLoaderExecution(err.stack);
30
31 if (!err.hideStack) {
32 message += stack;
33 } else {
34 details = stack;
35
36 if (typeof err.message === "string" && err.message) {
37 message += err.message;
38 } else {
39 message += err;
40 }
41 }
42 } else if (typeof err.message === "string" && err.message) {
43 message += err.message;
44 } else {
45 message += String(err);
46 }
47 } else {
48 message += String(err);
49 }
50
51 super(message);
52
53 this.name = "ModuleBuildError";
54 this.details = details;
55 this.error = err;
56
57 Error.captureStackTrace(this, this.constructor);
58 }
59
60 serialize(context) {
61 const { write } = context;
62
63 write(this.error);
64
65 super.serialize(context);
66 }
67
68 deserialize(context) {
69 const { read } = context;
70
71 this.error = read();
72
73 super.deserialize(context);
74 }
75}
76
77makeSerializable(ModuleBuildError, "webpack/lib/ModuleBuildError");
78
79module.exports = ModuleBuildError;