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.
Mach das zuerst
Stell in server.cfg sicher, dass dein Framework ÜBER dem fehlgeschlagenen Script steht.
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
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
Das Framework läuft nicht oder startet nach deiner Resource
ensure es_extendedunterensure my-scriptin der server.cfg. - 3
Der falsche Zugriff für die installierte Version
ESX Legacy exportiert
getSharedObject; QBCore exportiertGetCoreObject; Qbox will lieber, dass man sein Modul einbindet. Der Aufruf des jeweils anderen Frameworks liefert nil. - 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 öffnenFür diese Art Fehler Skript-Konverter übersetzt eine Resource zwischen ESX, QBCore und Qbox.
Fehler, die mit diesem zusammen auftreten
- Versuch, einen nil-Wert zu indizieren
- PlayerData ist leer oder noch nicht geladen
- Abhängigkeit nicht gefunden
- GetPlayer hat auf dem Server nil geliefert
- Zwei Frameworks (oder zwei Cores) laufen gleichzeitig
- Das Geldkonto ist nil
- charinfo oder metadata ist nil
- Das Event existiert nicht oder wurde nie registriert