From c6856e220446beb34feb449303f427f9cfcc252e Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 6 Aug 2021 12:09:55 +0200 Subject: [PATCH] optional modules will not fail the build when bail is set fixes #11594 --- lib/Compilation.js | 3 ++- test/configCases/parsing/optional/index.js | 11 +++++++++++ test/configCases/parsing/optional/warnings.js | 7 +++++++ test/configCases/parsing/optional/webpack.config.js | 4 ++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/configCases/parsing/optional/index.js create mode 100644 test/configCases/parsing/optional/warnings.js create mode 100644 test/configCases/parsing/optional/webpack.config.js diff --git a/lib/Compilation.js b/lib/Compilation.js index 9a6c7404087..445dd08e20e 100644 --- a/lib/Compilation.js +++ b/lib/Compilation.js @@ -1574,10 +1574,11 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si if (err) { if (dependencies.every(d => d.optional)) { this.warnings.push(err); + return callback(); } else { this.errors.push(err); + return callback(err); } - return callback(err); } if (!newModule) { diff --git a/test/configCases/parsing/optional/index.js b/test/configCases/parsing/optional/index.js new file mode 100644 index 00000000000..cca013cc054 --- /dev/null +++ b/test/configCases/parsing/optional/index.js @@ -0,0 +1,11 @@ +it("should not fail for optional modules with bail", () => { + let error; + try { + require("./not-existing"); + } catch (e) { + error = e; + } + expect(() => { + throw error; + }).toThrowError(); +}); diff --git a/test/configCases/parsing/optional/warnings.js b/test/configCases/parsing/optional/warnings.js new file mode 100644 index 00000000000..e011edaca23 --- /dev/null +++ b/test/configCases/parsing/optional/warnings.js @@ -0,0 +1,7 @@ +module.exports = [ + [ + /Module not found/, + /Can't resolve '\.\/not-existing' /, + { details: /not-existing\.js/ } + ] +]; diff --git a/test/configCases/parsing/optional/webpack.config.js b/test/configCases/parsing/optional/webpack.config.js new file mode 100644 index 00000000000..61694bc0914 --- /dev/null +++ b/test/configCases/parsing/optional/webpack.config.js @@ -0,0 +1,4 @@ +/** @type {import("../../../../").Configuration} */ +module.exports = { + bail: true +};