GoogleChrome/lighthouse · error · Error

Invalid expanded Gatherer:

Error message

Invalid expanded Gatherer: 

What it means

Error "Invalid expanded Gatherer: " thrown in GoogleChrome/lighthouse.

Source

Thrown at core/config/config-helpers.js:419

  const gathererDefn = expandGathererShorthand(gathererJson);
  if (gathererDefn.instance) {
    return {
      instance: gathererDefn.instance,
      implementation: gathererDefn.implementation,
      path: gathererDefn.path,
    };
  } else if (gathererDefn.implementation) {
    const GathererClass = gathererDefn.implementation;
    return {
      instance: new GathererClass(),
      implementation: gathererDefn.implementation,
      path: gathererDefn.path,
    };
  } else if (gathererDefn.path) {
    const path = gathererDefn.path;
    return requireGatherer(path, coreGathererList, configDir);
  } else {
    throw new Error('Invalid expanded Gatherer: ' + JSON.stringify(gathererDefn));
  }
}

/**
 * Take an array of audits and audit paths and require any paths (possibly
 * relative to the optional `configDir`) using `resolveModule`,
 * leaving only an array of AuditDefns.
 * @param {LH.Config['audits']} audits
 * @param {string=} configDir
 * @return {Promise<Array<LH.Config.AuditDefn>|null>}
 */
async function resolveAuditsToDefns(audits, configDir) {
  if (!audits) {
    return null;
  }

  const coreList = Runner.getAuditList();
  const auditDefnsPromises = audits.map(async (auditJson) => {

View on GitHub (pinned to 9515cd4e58)

Solutions

  1. Provide the gatherer as an object with an `implementation` (or `instance`) property.
  2. Check the gatherer definition in your config matches the expected shape: {implementation: GathererClass, options: {...}}.

When it happens

Trigger: Thrown when a gatherer definition expanded from shorthand config is still not a valid gatherer.

Common situations: See trigger scenarios.


AI-assisted analysis of GoogleChrome/lighthouse@9515cd4e58 (2026-08-13). Data as JSON: /api/errors/8dca6206e76d8137. Report an issue: GitHub.