Sha256: 023c2682d6fea870ed80f932af7ae76cd6024d1bfcc0d247aee1881cc186e0e5

Contents?: true

Size: 1.95 KB

Versions: 26

Compression:

Stored size: 1.95 KB

Contents

/*
	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 ModuleParseError extends WebpackError {
	/**
	 * @param {Module} module the errored module
	 * @param {string} source source code
	 * @param {Error&any} err the parse error
	 * @param {string[]} loaders the loaders used
	 */
	constructor(module, source, err, loaders) {
		let message = "Module parse failed: " + err.message;
		let loc = undefined;
		if (loaders.length >= 1) {
			message += `\nFile was processed with these loaders:${loaders
				.map(loader => `\n * ${loader}`)
				.join("")}`;
			message +=
				"\nYou may need an additional loader to handle the result of these loaders.";
		} else {
			message +=
				"\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders";
		}
		if (
			err.loc &&
			typeof err.loc === "object" &&
			typeof err.loc.line === "number"
		) {
			var lineNumber = err.loc.line;
			if (/[\0\u0001\u0002\u0003\u0004\u0005\u0006\u0007]/.test(source)) {
				// binary file
				message += "\n(Source code omitted for this binary file)";
			} else {
				const sourceLines = source.split(/\r?\n/);
				const start = Math.max(0, lineNumber - 3);
				const linesBefore = sourceLines.slice(start, lineNumber - 1);
				const theLine = sourceLines[lineNumber - 1];
				const linesAfter = sourceLines.slice(lineNumber, lineNumber + 2);
				message +=
					linesBefore.map(l => `\n| ${l}`).join("") +
					`\n> ${theLine}` +
					linesAfter.map(l => `\n| ${l}`).join("");
			}
			loc = err.loc;
		} else {
			message += "\n" + err.stack;
		}

		super(message);

		this.name = "ModuleParseError";
		this.module = module;
		this.loc = loc;
		this.error = err;

		Error.captureStackTrace(this, this.constructor);
	}
}

module.exports = ModuleParseError;

Version data entries

26 entries across 25 versions & 8 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/webpack/lib/ModuleParseError.js
disco_app-0.18.0 test/dummy/node_modules/webpack/lib/ModuleParseError.js
disco_app-0.18.2 test/dummy/node_modules/webpack/lib/ModuleParseError.js
disco_app-0.16.1 test/dummy/node_modules/webpack/lib/ModuleParseError.js
disco_app-0.15.2 test/dummy/node_modules/webpack/lib/ModuleParseError.js
disco_app-0.18.4 test/dummy/node_modules/webpack/lib/ModuleParseError.js
disco_app-0.18.1 test/dummy/node_modules/webpack/lib/ModuleParseError.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/webpack/lib/ModuleParseError.js
disco_app-0.14.0 test/dummy/node_modules/webpack/lib/ModuleParseError.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/webpack/lib/ModuleParseError.js
tang-0.2.1 spec/tang_app/node_modules/webpack/lib/ModuleParseError.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/webpack/lib/ModuleParseError.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/webpack/lib/ModuleParseError.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/webpack/lib/ModuleParseError.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/webpack/lib/ModuleParseError.js
tang-0.2.0 spec/tang_app/node_modules/webpack/lib/ModuleParseError.js
tang-0.1.0 spec/tang_app/node_modules/webpack/lib/ModuleParseError.js
tang-0.0.9 spec/tang_app/node_modules/webpack/lib/ModuleParseError.js
enju_library-0.3.8 spec/dummy/node_modules/webpack/lib/ModuleParseError.js
jester-data-8.0.0 node_modules/webpack/lib/ModuleParseError.js