THE ORB
Studio wird gestartet

Das ESX-/QBCore-/Core-Objekt ist nil

Ein Script hat dein Framework (ESX, QBCore, Qbox) nicht gefunden — entweder läuft es nicht, oder es startet nach diesem Script.

groupsDieses Script tut nichtspersonDas kannst du beheben

Mach das zuerst

Stell in server.cfg sicher, dass dein Framework ÜBER dem fehlgeschlagenen Script steht.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

Das Script wollte das geteilte Objekt des Frameworks nutzen, bevor es eines hatte. Der Fehler kommt meist als attempt to index a nil value (global 'ESX'), aber die Ursache ist konkret genug für eine eigene Antwort.

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Das alte getSharedObject-Muster, immer noch auf Dateiebene

    ESX = nil
    TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

    Das ist asynchron. Aller Code darunter läuft vor dem Callback. ESX Legacy hat das Event ganz entfernt, auf einem modernen Server feuert es also nie.

  2. 2

    Das Framework läuft nicht oder startet nach deiner Resource

    ensure es_extended unter ensure my-script in der server.cfg.

  3. 3

    Der falsche Zugriff für die installierte Version

    ESX Legacy exportiert getSharedObject; QBCore exportiert GetCoreObject; Qbox will lieber, dass man sein Modul einbindet. Der Aufruf des jeweils anderen Frameworks liefert nil.

  4. 4

    Es auf der falschen Seite verwenden

    Client- und Serverobjekt sind verschieden. Eine nur serverseitige Methode ist auf dem Client nil, auch wenn das Objekt geladen ist.

Wie du erkennst, welcher deiner ist

print(GetResourceState('es_extended'), ESX ~= nil)

Ist der Status started, ESX aber nil, liegt es am Zugriff oder am Timing. Ist der Status etwas anderes, liegt es an der server.cfg.

Wo du nachsehen musst

Der Kopf der fehlschlagenden Datei und die ensure-Reihenfolge in der server.cfg.

Wie du es behebst

ESX Legacy — direkt, synchron, ohne Callback:

ESX = exports['es_extended']:getSharedObject()

QBCore:

local QBCore = exports['qb-core']:GetCoreObject()

Qbox:

local qbx = exports.qbx_core

Wenn du ein altes ESX unterstützen musst, warte wenigstens darauf, bevor du es nutzt:

CreateThread(function()
    while ESX == nil do
        TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
        Wait(100)
    end
end)

Hängst du immer noch an deinem eigenen Code?

Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.

bug_reportServer Fixer öffnen

Für diese Art Fehler Skript-Konverter übersetzt eine Resource zwischen ESX, QBCore und Qbox.

Fehler, die mit diesem zusammen auftreten