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
- Re-run once to rule out a transient filesystem oddity
- Clear the laufey cache so the backend is re-resolved from scratch
- 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
- Treat as an internal bug: capture backend, target, and cache path for the report
- Clear the laufey cache to force re-resolution
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
- BenchContext::end() has already been invoked
- Unexpected third argument to Deno.bench()
- The benchmark which this context belongs to is not being exe
- BenchContext::start() has already been invoked
- Bench attempted to exit with exit code: ${exitCode}
AI-assisted analysis of denoland/deno@89f33cbef2 (2026-08-16).
Data as JSON: /api/errors/ff32b942149b9499.
Report an issue: GitHub.