„attempt to index a nil value“ in FiveM-Skripten beheben (ESX, QBCore, xPlayer)

Dieser Lua-Fehler bedeutet, dass ein Skript etwas, das nicht existiert, wie eine Tabelle benutzt hat. Der Teil in Klammern, etwa global 'ESX' oder local 'xPlayer', sagt, was fehlt, und jeder hat eine andere Lösung.

Vom Nodewave-Team · Aktualisiert am 8. November 2026

Lesen Sie zuerst den Fehler

Die Server-Konsole und die F8-Konsole zeigen den Fehler so an:

SCRIPT ERROR: @my_script/server/main.lua:12: attempt to index a nil value (global 'ESX')

Ressourcenname, Datei und Zeilennummer stehen zuerst, Sie wissen also genau, wo Sie suchen müssen. Die Wörter in Klammern sagen, was nil ist:

In den KlammernWas er meist bedeutet
global 'ESX'Das Skript hat das ESX-Objekt nie bekommen, oder ESX lief beim Start des Skripts nicht.
global 'QBCore'Dasselbe für QBCore.
local 'xPlayer' oder 'Player'Das Framework hat für diesen Spieler kein Spielerobjekt.
field 'Jobs' oder ein anderer NameDie Tabelle existiert, aber der Schlüssel fehlt, weil Daten oder eine Konfigurationsdatei nicht geladen wurden.

global 'ESX' beheben

  1. ESX zuerst starten. Setzen Sie in server.cfg ensure es_extended vor jedes Skript, das es nutzt, und prüfen Sie die Konsole auf Fehler von es_extended selbst, das seine Datenbankverbindung zum Starten braucht.
  2. ESX im Skript importieren. Fügen Sie diese Zeile in die fxmanifest.lua des Skripts ein:
shared_script '@es_extended/imports.lua'

Oder setzen Sie das Objekt in Lua, nahe am Dateianfang:

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

Alte Skripte nutzen TriggerEvent('esx:getSharedObject', ...). Dieses Event gibt es im aktuellen ESX nicht mehr, ersetzen Sie es durch den Export oben.

global 'QBCore' beheben

Definieren Sie das Objekt am Anfang jeder Lua-Datei, die es nutzt:

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

Ein local in einer Datei ist in einer anderen nicht sichtbar, ein Skript, das in client/main.lua funktioniert, kann also in client/events.lua trotzdem scheitern. Starten Sie qb-core in server.cfg vor dem Skript. Qbox enthält eine Kompatibilitätsschicht für die meisten QBCore-Skripte, prüfen Sie aber, ob das Skript sie unterstützt.

local 'xPlayer' beheben

ESX.GetPlayerFromId(source) und QBCore.Functions.GetPlayer(source) geben nil zurück, wenn der Spieler noch nicht geladen ist, gegangen ist oder die ID falsch ist. Prüfen Sie das Ergebnis immer, bevor Sie es benutzen:

local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return end

Häufige Gründe, warum der Spieler fehlt:

Ein fehlendes Feld beheben

Existiert eine Tabelle, aber ein Schlüssel ist nil, wurden die zugehörigen Daten nicht geladen. Prüfen Sie, ob die Konfigurationsdatei in fxmanifest.lua vor den Dateien steht, die sie nutzen, ob der Name überall gleich geschrieben ist und ob die Skriptversion zur Version Ihres Frameworks passt. Frameworks benennen Funktionen zwischen Versionen um, und für ältere Versionen geschriebene Skripte funktionieren dann nicht mehr.

Grundlagen prüfen

Immer noch Probleme?

Fragen Sie den Autor des Skripts, mit dem vollständigen Fehlertext, Datei und Zeile, Ihrem Framework und dessen Version sowie der Startreihenfolge aus server.cfg.

Hosten Sie Ihren FiveM-Server in Singapur

Niedriger Ping für Spieler in Indien, Malaysia und Indonesien, auf AMD EPYC mit NVMe und Gcore-DDoS-Schutz auf jeder IP.

FiveM-Hosting in Singapur →