denoland/deno · error · Error

${prefix}Linter plugin must be an object

Error message

${prefix}Linter plugin must be an object

What it means

Internal invariant: the resolved LAUFEY backend binary path has no parent directory — i.e. it is a filesystem root such as `/` — so the containing directory used for support files cannot be derived.

Source

Thrown at cli/js/40_lint.js:483

    }
  }

  return plugins.map((plugin, i) => installPlugin(plugin, specifiers?.[i]));
}

/**
 * @param {Deno.lint.Plugin} plugin
 * @param {string} [specifier] The specifier the plugin was loaded from, if any.
 */
function installPlugin(plugin, specifier) {
  // When the plugin was loaded from a specifier (i.e. `lint.plugins` in the
  // config), prefix validation errors with it so the user knows which plugin
  // is misbehaving instead of getting an anonymous error.
  const prefix = typeof specifier === "string"
    ? `Failed to load lint plugin '${specifier}': `
    : "";
  if (typeof plugin !== "object") {
    throw new Error(`${prefix}Linter plugin must be an object`);
  }
  if (typeof plugin.name !== "string") {
    throw new Error(`${prefix}Linter plugin name must be a string`);
  }
  if (!/^[a-z-]+$/.test(plugin.name)) {
    throw new Error(
      `${prefix}Linter plugin name must only contain lowercase letters (a-z) or hyphens (-).`,
    );
  }
  if (plugin.name.startsWith("-") || plugin.name.endsWith("-")) {
    throw new Error(
      `${prefix}Linter plugin name must start and end with a lowercase letter.`,
    );
  }
  if (plugin.name.includes("--")) {
    throw new Error(
      `${prefix}Linter plugin name must not have consequtive hyphens.`,
    );

View on GitHub (pinned to 89f33cbef2)

Solutions

  1. Re-run once to rule out a transient filesystem oddity
  2. Clear the laufey cache so the backend is re-resolved from scratch
  3. Report a bug against `deno desktop` with backend, target, and cache location if it persists
Defensive patterns

Strategy: validation

Validate before calling

if (binaryPath === '/' || dirname(binaryPath) === binaryPath) {
  throw new Error('internal: backend binary resolved to filesystem root — clearing cache and retrying');
}

Prevention

When it happens

Trigger: Effectively unreachable in normal use; would require the binary locator to return a root path, indicating an internal path-handling bug.

Common situations: None realistic; report it if seen.

Related errors


AI-assisted analysis of denoland/deno@89f33cbef2 (2026-08-16). Data as JSON: /api/errors/ff32b942149b9499. Report an issue: GitHub.