diff --git a/packages/webpack-cli/lib/webpack-cli.js b/packages/webpack-cli/lib/webpack-cli.js index c3d9052e7fa..0548c9a2550 100644 --- a/packages/webpack-cli/lib/webpack-cli.js +++ b/packages/webpack-cli/lib/webpack-cli.js @@ -67,11 +67,11 @@ class WebpackCLI { } // For babel/typescript - if (result.default) { - result = result.default; + if (result && typeof result === "object" && "default" in result) { + result = result.default || {}; } - return result; + return result || {}; } loadJSONFile(pathToFile, handleError = true) { diff --git a/test/build/config/no-code/no-code.test.js b/test/build/config/no-code/no-code.test.js new file mode 100644 index 00000000000..e9515123b1c --- /dev/null +++ b/test/build/config/no-code/no-code.test.js @@ -0,0 +1,16 @@ +"use strict"; +const { resolve } = require("path"); +const { run } = require("../../../utils/test-utils"); + +describe("config flag with no code", () => { + it("should not throw error with no configuration or index file", async () => { + const { exitCode, stderr, stdout } = await run(__dirname, [ + "-c", + resolve(__dirname, "webpack.config.js"), + ]); + + expect(exitCode).toBe(0); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + }); +}); diff --git a/test/build/config/no-code/src/index.js b/test/build/config/no-code/src/index.js new file mode 100644 index 00000000000..164e3e9c24f --- /dev/null +++ b/test/build/config/no-code/src/index.js @@ -0,0 +1 @@ +console.log("Peeves"); diff --git a/test/build/config/no-code/webpack.config.js b/test/build/config/no-code/webpack.config.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/build/config/undefined-default/src/index.js b/test/build/config/undefined-default/src/index.js new file mode 100644 index 00000000000..d4caacb0cbb --- /dev/null +++ b/test/build/config/undefined-default/src/index.js @@ -0,0 +1 @@ +console.log("Tom Riddle"); diff --git a/test/build/config/undefined-default/undefined-default.test.js b/test/build/config/undefined-default/undefined-default.test.js new file mode 100644 index 00000000000..eabeb06be42 --- /dev/null +++ b/test/build/config/undefined-default/undefined-default.test.js @@ -0,0 +1,16 @@ +"use strict"; +const { resolve } = require("path"); +const { run } = require("../../../utils/test-utils"); + +describe("config flag with undefined default export config file", () => { + it("should not throw error with no configuration or index file", async () => { + const { exitCode, stderr, stdout } = await run(__dirname, [ + "-c", + resolve(__dirname, "webpack.config.js"), + ]); + + expect(exitCode).toBe(0); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + }); +}); diff --git a/test/build/config/undefined-default/webpack.config.js b/test/build/config/undefined-default/webpack.config.js new file mode 100644 index 00000000000..253def99924 --- /dev/null +++ b/test/build/config/undefined-default/webpack.config.js @@ -0,0 +1 @@ +module.exports.default = undefined; diff --git a/test/build/config/undefined/src/index.js b/test/build/config/undefined/src/index.js new file mode 100644 index 00000000000..eb334e35b09 --- /dev/null +++ b/test/build/config/undefined/src/index.js @@ -0,0 +1 @@ +console.log("Percy Weasley"); diff --git a/test/build/config/undefined/undefined.test.js b/test/build/config/undefined/undefined.test.js new file mode 100644 index 00000000000..2845fecb20c --- /dev/null +++ b/test/build/config/undefined/undefined.test.js @@ -0,0 +1,16 @@ +"use strict"; +const { resolve } = require("path"); +const { run } = require("../../../utils/test-utils"); + +describe("config flag with undefined export config file", () => { + it("should not throw error with no configuration or index file", async () => { + const { exitCode, stderr, stdout } = await run(__dirname, [ + "-c", + resolve(__dirname, "webpack.config.js"), + ]); + + expect(exitCode).toBe(0); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + }); +}); diff --git a/test/build/config/undefined/webpack.config.js b/test/build/config/undefined/webpack.config.js new file mode 100644 index 00000000000..d0f5f3a7fc4 --- /dev/null +++ b/test/build/config/undefined/webpack.config.js @@ -0,0 +1 @@ +module.exports = undefined;