{"record":{"id":"1bca182cf5aefd69","repo":"slidevjs/slidev","slug":"runner-for-language-lang-not-found","errorCode":null,"errorMessage":"Runner for language \"${lang}\" not found","messagePattern":"Runner for language \"(.+?)\" not found","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/client/setup/code-runners.ts","lineNumber":33,"sourceCode":"    ts: runTypeScript,\n  }\n\n  const { defaultHighlightOptions, getEagerHighlighter } = await (await import('./shiki')).default()\n\n  const highlighter = await getEagerHighlighter()\n  const highlight = (code: string, lang: string, options?: Partial<CodeToHastOptions>) => {\n    return highlighter.codeToHtml(code, {\n      ...defaultHighlightOptions,\n      lang,\n      ...options,\n    })\n  }\n\n  const run = async (code: string, lang: string, options: Record<string, unknown>): Promise<CodeRunnerOutputs> => {\n    try {\n      const runner = runners[lang]\n      if (!runner)\n        throw new Error(`Runner for language \"${lang}\" not found`)\n      return await runner(\n        code,\n        {\n          options,\n          highlight,\n          run: async (code, lang) => {\n            return await run(code, lang, options)\n          },\n        },\n      )\n    }\n    catch (e) {\n      console.error(e)\n      return {\n        error: `${e}`,\n      }\n    }\n  }","sourceCodeStart":15,"sourceCodeEnd":51,"githubUrl":"https://github.com/slidevjs/slidev/blob/0d798ace5828966d9f77f62094d5f7a971ad98f7/packages/client/setup/code-runners.ts#L15-L51","documentation":"Thrown by the interactive code runner when a fenced code block requests a language with no registered CodeRunner. Built-in runners only cover javascript/js/typescript/ts; any other language must be registered via a setup or addon.","triggerScenarios":"Clicking Run on a ```python / ```go / ```rust (etc.) block without a corresponding runner registered through defineCodeRunner or an addon.","commonSituations":"Assuming Slidev can execute any language out of the box; typo in the fence language; addon that should register the runner not installed.","solutions":["Register a runner for the language via a code-runners setup or addon","Change the fence language to js/ts if you only need JS execution","Install an upstream code-runner addon for that language"],"exampleFix":"// before\n```python\nprint(1)\n```\n// after - register in setup/code-runners.ts\nrunners.python = async (code, ctx) => { /* ... */ }","handlingStrategy":"validation","validationCode":"const supportedLangs = ['javascript', 'js', 'typescript', 'ts', ...Object.keys(customRunners)]\nif (!supportedLangs.includes(fenceLang)) {\n  // either register a runner or hide the Run button\n}","typeGuard":"function isRunnableLang(lang: string, runners: Record<string, unknown>): lang is string {\n  return lang in runners\n}","tryCatchPattern":null,"preventionTips":["Register code runners for every language you fence as runnable","Hide or disable Run on unsupported languages in your UI"],"tags":["code-runner","monaco","language"],"backgroundTag":null,"analyzedSha":"0d798ace5828966d9f77f62094d5f7a971ad98f7","analyzedAt":"2026-08-12T17:10:56.221Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}