moeru-ai/airi · critical · Error

Godot stage exported binary not found. Expected at: ${join(p

Error message

Godot stage exported binary not found. Expected at: ${join(process.resourcesPath, 'godot-stage')}

What it means

Thrown by resolveGodotBinary in a packaged Electron build when resolveExportedGodotBinary returns undefined — i.e. no platform-appropriate exported Godot stage sidecar was found under process.resourcesPath/godot-stage. Packaged builds rely on a pre-exported binary shipped in Electron resources rather than the dev-mode GODOT4 engine.

Source

Thrown at apps/stage-tamagotchi/src/main/services/airi/godot-stage/index.ts:352

    throw new Error(
      'GODOT4 must point to the Godot executable file, not a directory or app bundle.\n'
      + `Configured path: ${executable}\n`
      + 'Examples:\n'
      + '  Windows: C:\\Path\\To\\Godot_v4.x-stable_mono_win64.exe\n'
      + '  macOS: /Applications/Godot_mono.app/Contents/MacOS/Godot\n'
      + '  Linux: /path/to/Godot_v4.x-stable_mono_linux.x86_64',
    )
  }
}

async function resolveGodotBinary(): Promise<GodotBinaryResolution> {
  if (app.isPackaged) {
    const exported = await resolveExportedGodotBinary()
    if (exported) {
      return { executable: exported, mode: 'exported' }
    }

    throw new Error(
      'Godot stage exported binary not found. '
      + `Expected at: ${join(process.resourcesPath, 'godot-stage')}`,
    )
  }

  const envPath = process.env.GODOT4?.trim()
  if (!envPath) {
    throw new Error(
      'GODOT4 is required to start Godot Stage in development mode.\n'
      + 'Set GODOT4 to the absolute path of your Godot 4.x .NET/Mono executable, then restart the Electron dev app.\n'
      + 'Examples:\n'
      + '  PowerShell: $env:GODOT4 = "C:\\Path\\To\\Godot_v4.x-stable_mono_win64.exe"\n'
      + '  Bash: export GODOT4="/path/to/godot"',
    )
  }

  await validateConfiguredGodotEnginePath(envPath)
  return { executable: envPath, mode: 'engine' }

View on GitHub (pinned to 27111382b4)

Solutions

  1. Rebuild the package ensuring the godot-stage export for the target platform is included under resources/godot-stage (check electron-builder extraResources).
  2. Verify the packaged app's resources directory actually contains the godot-stage binary for the running OS.
  3. Run the export pipeline (engines/stage-tamagotchi-godot) for the target platform before packaging.
  4. If you intended dev mode, ensure app.isPackaged reports false (run via the dev script, not the packaged bundle).
Defensive patterns

Strategy: validation

Validate before calling

import { existsSync } from 'node:fs'
import { join } from 'node:path'

function exportedBinaryPackaged(): boolean {
  return existsSync(join(process.resourcesPath, 'godot-stage'))
}

Type guard

function exportedBinaryPackaged(): boolean {
  return existsSync(join(process.resourcesPath, 'godot-stage'))
}

Prevention

When it happens

Trigger: app.isPackaged is true and the export step did not place (or the packaging config did not include) the godot-stage binary under resourcesPath for the current platform.

Common situations: Packaging pipeline (electron-builder config) omitted the extraResources entry for godot-stage; cross-platform build produced artifacts for a different OS than the one running; the sidecar was stripped by a cleanup step; running an unpackaged-as-packaged misconfiguration.

Related errors


AI-assisted analysis of moeru-ai/airi@27111382b4 (2026-08-12). Data as JSON: /api/errors/f7013d41d54ad685. Report an issue: GitHub.