stablyai/orca · error · Error
${pluginName} did not produce Oxlint output
Error message
${pluginName} did not produce Oxlint output What it means
runOxlintPluginOnSource spawns the oxlint binary on a temp source file with a generated config and --format json. If the spawn succeeded (no result.error) but stdout is empty, the error is whatever oxlint wrote to stderr, or a generic '${pluginName} did not produce Oxlint output' if stderr is also empty. JSON.parse of empty stdout would throw a confusing SyntaxError, so this guard fails earlier with actionable text.
Source
Thrown at config/scripts/oxlint-plugin-test-runner.mjs:52
perf: 'off',
style: 'off',
restriction: 'off',
nursery: 'off'
},
jsPlugins: [{ name: pluginName, specifier: pluginPath }],
rules
})
)
const result = spawnSync(
process.execPath,
[oxlintPath, '--config', configPath, '--format', 'json', sourcePath],
{ encoding: 'utf8' }
)
if (result.error) {
throw result.error
}
if (!result.stdout.trim()) {
throw new Error(result.stderr || `${pluginName} did not produce Oxlint output`)
}
return JSON.parse(result.stdout).diagnostics
} finally {
rmSync(directory, { recursive: true, force: true })
}
}
View on GitHub (pinned to 1136503c6a)
Solutions
- Run oxlint manually with the generated config and source to read the full stderr: node oxlint --config <cfg> --format json <src>
- Verify pluginPath resolves to a module that loads without error (node -e 'import(<pluginPath>)')
- Check oxlint version compatibility for the jsPlugins config shape against the runner's expectations
- Confirm the plugin's specifier actually exports the rules named in the rules config
Defensive patterns
Strategy: try-catch
Validate before calling
import { spawnSync } from 'node:child_process'
function oxlintAvailable(oxlintPath) {
const r = spawnSync(process.execPath, [oxlintPath, '--version'], { encoding: 'utf8' })
return r.status === 0 && r.stdout.trim().length > 0
} Try / catch
try {
const diagnostics = runOxlintPluginOnSource({ pluginName, pluginPath, rules, source })
} catch (error) {
// error.message is either oxlint's stderr or the generic 'did not produce output'
throw new Error(`oxlint plugin ${pluginName} failed: ${error.message}`)
} Prevention
- Run the plugin module standalone (node -e 'import(pluginPath)') to confirm it loads
- Pin oxlint to a version known to support the jsPlugins config shape
- Reproduce the exact spawn command manually to read the full stderr
When it happens
Trigger: oxlint exits 0 (or non-zero without result.error set) but emits nothing on stdout. Typical causes: the jsPlugin failed to load (specifier wrong, plugin module errored on import), the oxlint binary is the wrong version and does not support jsPlugins/categories config, or oxlint wrote its report to stderr instead of stdout.
Common situations: Bumping oxlint to a version that changed the plugin protocol; a pluginPath that points at a stale build; a plugin module whose top-level import throws (so oxlint silently skips it); config key renamed (categories vs rules) in a newer oxlint.
Related errors
- [plain-node-entry-guard] could not smoke-load daemon-entry.j
- Electron trial failed (${result.error?.message ?? result.sig
- Electron trial did not report a result (status ${result.stat
- Electron trial exhausted launcher attempts
- ${commandLabel} ${args.join(' ')} failed to start: ${String(
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/6649864326812e41.
Report an issue: GitHub.