eslint/eslint · error

Key "processor": Could not find "${localProcessorName}" in p

Error message

Key "processor": Could not find "${localProcessorName}" in plugin "${pluginName}".

What it means

Thrown as a TypeError in the Config constructor (config.js:534) when `processor` is a string but the referenced plugin/processor cannot be resolved. The lookup is plugins[pluginName].processors[localProcessorName]; missing plugin, missing `processors`, or a wrong processor name all trigger it.

Source

Thrown at lib/config/config.js:534

		}

		// Check processor value
		if (processor) {
			this.processor = processor;

			if (typeof processor === "string") {
				const { pluginName, objectName: localProcessorName } =
					splitPluginIdentifier(processor);

				this.#processorName = processor;

				if (
					!plugins ||
					!plugins[pluginName] ||
					!plugins[pluginName].processors ||
					!plugins[pluginName].processors[localProcessorName]
				) {
					throw new TypeError(
						`Key "processor": Could not find "${localProcessorName}" in plugin "${pluginName}".`,
					);
				}

				this.processor =
					plugins[pluginName].processors[localProcessorName];
			} else if (typeof processor === "object") {
				this.#processorName = getObjectId(processor);
				this.processor = processor;
			} else {
				throw new TypeError(
					"Key 'processor' must be a string or an object.",
				);
			}
		}

		// Process the rules
		if (this.rules) {

View on GitHub (pinned to f131c034ad)

Solutions

  1. Add the plugin providing the processor to `plugins`.
  2. Confirm the processor key: `console.log(Object.keys(plugin.processors))`.
  3. Check spelling and version of the plugin; processors are sometimes renamed across majors.

Example fix

// before
{ processor: 'markdown/markdown', plugins: {} }

// after
import markdown from 'eslint-plugin-markdown';
{ processor: 'markdown/markdown', plugins: { markdown } }
Defensive patterns

Strategy: validation

Validate before calling

function resolveProcessor(plugins, processor) {
  const [pluginName, name] = processor.split('/');
  return !!plugins?.[pluginName]?.processors?.[name];
}

Type guard

null

Try / catch

try { new Config(block); }
catch (e) {
  if (/Key "processor".*Could not find/.test(e.message)) { /* add plugin */ }
}

Prevention

When it happens

Trigger: Setting `processor: 'foo/bar'` where plugin 'foo' is absent, or 'foo' exists but exports no `processors.bar`. Also typos/renames after a plugin upgrade.

Common situations: Referencing a processor (e.g. markdown processor) without registering its plugin; using the preprocessor name from an older plugin version; copy-pasting a config snippet whose plugin wasn't added.

Related errors


AI-assisted analysis of eslint/eslint@f131c034ad (2026-08-03). Data as JSON: /data/errors/ff9ea9f1b58426e9.json. Report an issue: GitHub.