diff --git a/lib/NormalModuleFactory.js b/lib/NormalModuleFactory.js index 989bca401..96dcdd6fb 100644 --- a/lib/NormalModuleFactory.js +++ b/lib/NormalModuleFactory.js @@ -520,29 +520,33 @@ class NormalModuleFactory extends ModuleFactory { ) ); } - Object.assign(data.createData, { - layer: - layer === undefined ? contextInfo.issuerLayer || null : layer, - request: stringifyLoadersAndResource( - allLoaders, - resourceData.resource - ), - userRequest, - rawRequest: request, - loaders: allLoaders, - resource: resourceData.resource, - matchResource: matchResourceData - ? matchResourceData.resource - : undefined, - resourceResolveData: resourceData.data, - settings, - type, - parser: this.getParser(type, settings.parser), - parserOptions: settings.parser, - generator: this.getGenerator(type, settings.generator), - generatorOptions: settings.generator, - resolveOptions - }); + try { + Object.assign(data.createData, { + layer: + layer === undefined ? contextInfo.issuerLayer || null : layer, + request: stringifyLoadersAndResource( + allLoaders, + resourceData.resource + ), + userRequest, + rawRequest: request, + loaders: allLoaders, + resource: resourceData.resource, + matchResource: matchResourceData + ? matchResourceData.resource + : undefined, + resourceResolveData: resourceData.data, + settings, + type, + parser: this.getParser(type, settings.parser), + parserOptions: settings.parser, + generator: this.getGenerator(type, settings.generator), + generatorOptions: settings.generator, + resolveOptions + }); + } catch (e) { + return callback(e); + } callback(); }); this.resolveRequestArray( diff --git a/test/configCases/errors/asset-options-validation/errors.js b/test/configCases/errors/asset-options-validation/errors.js new file mode 100644 index 000000000..cc7b138a3 --- /dev/null +++ b/test/configCases/errors/asset-options-validation/errors.js @@ -0,0 +1,6 @@ +module.exports = [ + [ + /Invalid generator object\. Asset Modules Plugin has been initialized using a generator object that does not match the API schema/, + /generator has an unknown property 'filename'/ + ] +]; diff --git a/test/configCases/errors/asset-options-validation/index.js b/test/configCases/errors/asset-options-validation/index.js new file mode 100644 index 000000000..397651561 --- /dev/null +++ b/test/configCases/errors/asset-options-validation/index.js @@ -0,0 +1 @@ +import url from "./text.txt"; diff --git a/test/configCases/errors/asset-options-validation/text.txt b/test/configCases/errors/asset-options-validation/text.txt new file mode 100644 index 000000000..557db03de --- /dev/null +++ b/test/configCases/errors/asset-options-validation/text.txt @@ -0,0 +1 @@ +Hello World diff --git a/test/configCases/errors/asset-options-validation/webpack.config.js b/test/configCases/errors/asset-options-validation/webpack.config.js new file mode 100644 index 000000000..6a2069d8c --- /dev/null +++ b/test/configCases/errors/asset-options-validation/webpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("../../../../").Configuration} */ +module.exports = { + module: { + rules: [ + { + test: /\.txt$/, + type: "asset/inline", + generator: { + filename: "[name].txt" + } + } + ] + } +};