{"record":{"id":"6217a8120808dc24","repo":"moeru-ai/airi","slug":"godot4-points-to-a-missing-godot-executable-nconf","errorCode":null,"errorMessage":"GODOT4 points to a missing Godot executable.\\nConfigured path: ${executable}\\nSet GODOT4 to the absolute path of your Godot 4.x .NET/Mono executable before starting dev mode.\\nOriginal error: ${errorMessageFrom(error) ?? 'unknown error'}","messagePattern":"GODOT4 points to a missing Godot executable\\.\\\\nConfigured path: (.+?)\\\\nSet GODOT4 to the absolute path of your Godot 4\\.x \\.NET/Mono executable before starting dev mode\\.\\\\nOriginal error: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"apps/stage-tamagotchi/src/main/services/airi/godot-stage/index.ts","lineNumber":325,"sourceCode":"\n  const binaryPath = join(process.resourcesPath, 'godot-stage', binaryName)\n\n  try {\n    await access(binaryPath)\n    return binaryPath\n  }\n  catch {\n    return undefined\n  }\n}\n\nasync function validateConfiguredGodotEnginePath(executable: string) {\n  let executableStats\n  try {\n    executableStats = await stat(executable)\n  }\n  catch (error) {\n    throw new Error(\n      'GODOT4 points to a missing Godot executable.\\n'\n      + `Configured path: ${executable}\\n`\n      + 'Set GODOT4 to the absolute path of your Godot 4.x .NET/Mono executable before starting dev mode.\\n'\n      + `Original error: ${errorMessageFrom(error) ?? 'unknown error'}`,\n    )\n  }\n\n  if (!executableStats.isFile()) {\n    throw new Error(\n      'GODOT4 must point to the Godot executable file, not a directory or app bundle.\\n'\n      + `Configured path: ${executable}\\n`\n      + 'Examples:\\n'\n      + '  Windows: C:\\\\Path\\\\To\\\\Godot_v4.x-stable_mono_win64.exe\\n'\n      + '  macOS: /Applications/Godot_mono.app/Contents/MacOS/Godot\\n'\n      + '  Linux: /path/to/Godot_v4.x-stable_mono_linux.x86_64',\n    )\n  }\n}","sourceCodeStart":307,"sourceCodeEnd":343,"githubUrl":"https://github.com/moeru-ai/airi/blob/27111382b4a79a7e983289d6e983a06af185ed0f/apps/stage-tamagotchi/src/main/services/airi/godot-stage/index.ts#L307-L343","documentation":"Thrown by validateConfiguredGodotEnginePath when stat(GODOT4) rejects (typically ENOENT) in development mode. The error interpolates the configured path and the original stat error, and instructs the user to set GODOT4 to an absolute Godot 4.x .NET/Mono executable.","triggerScenarios":"GODOT4 environment variable points to a path that does not exist on disk; relative path resolved against an unexpected cwd; typo in the path; the Godot binary was moved/uninstalled after the env var was set.","commonSituations":"Fresh dev setup where GODOT4 was never set correctly; path uses ~ or $HOME that wasn't expanded; Windows path with backslashes passed unquoted through a shell that mangled it; Godot uninstalled/upgraded and the old path retained.","solutions":["Set GODOT4 to the absolute path of an existing Godot 4.x Mono/.NET executable and restart the dev app.","Verify the path with `stat \"$GODOT4\"` (or Get-Item on Windows) before launching.","Expand any ~ or env references to an absolute path.","Reinstall Godot 4 .NET/Mono if the binary was removed."],"exampleFix":"# before\nexport GODOT4=godot # not absolute / not on PATH as a file\n\n# after\nexport GODOT4=\"/opt/Godot_v4.x-stable_mono_linux.x86_64\"","handlingStrategy":"validation","validationCode":"import { stat } from 'node:fs/promises'\n\nasync function godotExecutableExists(path: string): Promise<boolean> {\n  try { await stat(path); return true } catch { return false }\n}","typeGuard":"async function isExistingGodotPath(path: string): Promise<boolean> {\n  try { await stat(path); return true } catch { return false }\n}","tryCatchPattern":null,"preventionTips":["Set GODOT4 to an absolute path to an existing Godot 4.x Mono executable.","Expand ~ and env references before launching.","Verify with stat/file before starting the dev app."],"tags":["godot-stage","environment-variables","filesystem","development","configuration"],"backgroundTag":null,"analyzedSha":"27111382b4a79a7e983289d6e983a06af185ed0f","analyzedAt":"2026-08-12T18:33:34.132Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}